1+ # Function to make a curl request and retry if "success" is missing
2+ make_request () {
3+ local response
4+ local url=" http://localhost:818$(( 1 + RANDOM % $INSTANCES )) /w/api.php"
5+ response=$( curl -s -m 20 -X POST -F " action=wbeditentity" -F " format=json" -F " token=+\\ " -F " $1 " -F " $2 " " $url " )
6+ echo " $response " >> process.out
7+ if [[ " $response " != * " success" * ]]; then
8+ echo " success missing, retrying"
9+ make_request " $1 " " $2 "
10+ fi
11+ }
12+
113# Get the ball (and id counters rolling) with some simple entities..
2- curl -s -m 20 -X POST -F ' action=wbeditentity ' -F ' format=json ' -F ' token=+\ ' -F ' new=item' -F ' data={}' http://localhost:818 $(( 1 + RANDOM % $INSTANCES )) /w/api.php >> process.out && echo >> process.out
3- curl -s -m 20 -X POST -F ' action=wbeditentity ' -F ' format=json ' -F ' token=+\ ' -F ' new=property' -F " data={\" datatype\" :\" string\" ,\" labels\" :{\" en\" :{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }}}" http://localhost:818 $(( 1 + RANDOM % $INSTANCES )) /w/api.php >> process.out && echo >> process.out
14+ make_request " new=item" " data={}"
15+ make_request " new=property" " data={\" datatype\" :\" string\" ,\" labels\" :{\" en\" :{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }}}"
416
517# Then do the bulk of the stuff
618
@@ -12,7 +24,7 @@ curl -s -m 20 -X POST -F 'action=wbeditentity' -F 'format=json' -F 'token=+\' -F
1224properties=( wikibase-item wikibase-property string time )
1325for p in " ${properties[@]} "
1426do
15- curl -s -m 20 -X POST -F ' action=wbeditentity ' -F ' format=json ' -F ' token=+\ ' -F ' new=property' -F " data={\" datatype\" :\" ${p} \" ,\" labels\" :{\" en\" :{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }}}" http://localhost:818 $(( 1 + RANDOM % $INSTANCES )) /w/api.php >> process.out && echo >> process.out
27+ make_request " new=property" " data={\" datatype\" :\" ${p} \" ,\" labels\" :{\" en\" :{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }}}"
1628done
1729
1830# Create some items including statements
2133for i in {1..1000}
2234do
2335 (
24- curl -s -m 20 -X POST -F ' action=wbeditentity ' -F ' format=json ' -F ' token=+\ ' -F ' new=item' -F " data={\" labels\" :{\" en\" :{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }},\" descriptions\" :{\" en\" :{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }},\" aliases\" :{\" en\" :[{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }]},\" claims\" :{\" P4\" :[{\" mainsnak\" :{\" snaktype\" :\" value\" ,\" property\" :\" P4\" ,\" datavalue\" :{\" value\" :\" statement-string-value\" ,\" type\" :\" string\" },\" datatype\" :\" string\" },\" type\" :\" statement\" ,\" rank\" :\" normal\" }]}}" http://localhost:818 $(( 1 + RANDOM % $INSTANCES )) /w/api.php >> process.out && echo >> process.out
36+ make_request " new=item" " data={\" labels\" :{\" en\" :{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }},\" descriptions\" :{\" en\" :{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }},\" aliases\" :{\" en\" :[{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }]},\" claims\" :{\" P4\" :[{\" mainsnak\" :{\" snaktype\" :\" value\" ,\" property\" :\" P4\" ,\" datavalue\" :{\" value\" :\" statement-string-value\" ,\" type\" :\" string\" },\" datatype\" :\" string\" },\" type\" :\" statement\" ,\" rank\" :\" normal\" }]}}"
2537 )&
2638 if (( $(wc - w <<< $(jobs - p)) % $ASYNC == 0 )); then sleep 0.5; fi
2739done
3042for i in {1..1000}
3143do
3244 (
33- curl -s -m 20 -X POST -F ' action=wbeditentity ' -F ' format=json ' -F ' token=+\ ' -F ' new=item' -F " data={\" labels\" :{\" en\" :{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }},\" descriptions\" :{\" en\" :{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }},\" aliases\" :{\" en\" :[{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }]},\" claims\" :{\" P2\" :[{\" mainsnak\" :{\" snaktype\" :\" value\" ,\" property\" :\" P2\" ,\" datavalue\" :{\" value\" :{\" entity-type\" :\" item\" ,\" numeric-id\" :1,\" id\" :\" Q1\" },\" type\" :\" wikibase-entityid\" },\" datatype\" :\" wikibase-item\" },\" type\" :\" statement\" ,\" rank\" :\" normal\" }]}}" http://localhost:818 $(( 1 + RANDOM % $INSTANCES )) /w/api.php >> process.out && echo >> process.out
45+ make_request " new=item" " data={\" labels\" :{\" en\" :{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }},\" descriptions\" :{\" en\" :{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }},\" aliases\" :{\" en\" :[{\" language\" :\" en\" ,\" value\" :\" $( sed " s/[^a-zA-Z0-9]//g" <<< $( openssl rand -base64 30) )\" }]},\" claims\" :{\" P2\" :[{\" mainsnak\" :{\" snaktype\" :\" value\" ,\" property\" :\" P2\" ,\" datavalue\" :{\" value\" :{\" entity-type\" :\" item\" ,\" numeric-id\" :1,\" id\" :\" Q1\" },\" type\" :\" wikibase-entityid\" },\" datatype\" :\" wikibase-item\" },\" type\" :\" statement\" ,\" rank\" :\" normal\" }]}}"
3446 )&
3547 if (( $(wc - w <<< $(jobs - p)) % $ASYNC == 0 )); then sleep 0.5; fi
3648done
0 commit comments