Created
November 22, 2019 06:27
-
-
Save eiri/1e5ba550f5dbd271b0b7d03d65e66414 to your computer and use it in GitHub Desktop.
Testing facilities for removing of view_changes from CouchDB
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{"docs":[{"word":"trashy","_id":"0001","bool":true,"number":358},{"word":"Teleostei","_id":"0002","bool":true,"number":368},{"word":"threadflower","_id":"0003","bool":true,"number":683},{"word":"passir","_id":"0004","bool":true,"number":875},{"word":"carotid","_id":"0005","bool":true,"number":762},{"word":"cogracious","_id":"0006","bool":false,"number":321},{"word":"feru","_id":"0007","bool":false,"number":588},{"word":"dumbbeller","_id":"0008","bool":false,"number":33},{"word":"foxberry","_id":"0009","bool":false,"number":321},{"word":"dishelm","_id":"0010","bool":false,"number":8},{"word":"Ancylocladus","_id":"0011","bool":true,"number":580},{"word":"surpliced","_id":"0012","bool":true,"number":887},{"word":"inky","_id":"0013","bool":true,"number":838},{"word":"utopographer","_id":"0014","bool":true,"number":887},{"word":"Almain","_id":"0015","bool":false,"number":562},{"word":"discretely","_id":"0016","bool":true,"number":586},{"word":"archdivine","_id":"0017","bool":false,"number":43},{"word":"anarthropodous","_id":"0018","bool":true,"number":705},{"word":"heller","_id":"0019","bool":true,"number":672},{"word":"blackstick","_id":"0020","bool":false,"number":148},{"word":"protoscientific","_id":"0021","bool":false,"number":619},{"word":"iatrotechnics","_id":"0022","bool":true,"number":95},{"word":"organum","_id":"0023","bool":false,"number":85},{"word":"underdrainer","_id":"0024","bool":false,"number":745},{"word":"Pachystima","_id":"0025","bool":true,"number":420},{"word":"holoparasitic","_id":"0026","bool":true,"number":543},{"word":"deceiver","_id":"0027","bool":true,"number":977},{"word":"fibroin","_id":"0028","bool":false,"number":51},{"word":"hydrocoralline","_id":"0029","bool":true,"number":345},{"word":"glaciology","_id":"0030","bool":true,"number":256},{"word":"teems","_id":"0031","bool":false,"number":863},{"word":"rethrow","_id":"0032","bool":false,"number":737},{"word":"paigle","_id":"0033","bool":false,"number":758},{"word":"frenzelite","_id":"0034","bool":false,"number":957},{"word":"amoebae","_id":"0035","bool":false,"number":621},{"word":"circumscription","_id":"0036","bool":false,"number":671},{"word":"multidenticulate","_id":"0037","bool":true,"number":926},{"word":"digammated","_id":"0038","bool":true,"number":310},{"word":"adlumidine","_id":"0039","bool":true,"number":823},{"word":"lachsa","_id":"0040","bool":false,"number":832},{"word":"fecundation","_id":"0041","bool":true,"number":907},{"word":"woodenware","_id":"0042","bool":false,"number":960},{"word":"oleosity","_id":"0043","bool":true,"number":820},{"word":"nitroprussic","_id":"0044","bool":true,"number":850},{"word":"styan","_id":"0045","bool":true,"number":501},{"word":"covenanting","_id":"0046","bool":true,"number":776},{"word":"exscriptural","_id":"0047","bool":false,"number":636},{"word":"Stuartia","_id":"0048","bool":true,"number":952},{"word":"bomb","_id":"0049","bool":true,"number":114},{"word":"convincibility","_id":"0050","bool":false,"number":32}]} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{"docs":[{"word":"plethysmographically","_id":"0051","bool":false,"number":248},{"word":"downtroddenness","_id":"0052","bool":false,"number":178},{"word":"nondeportation","_id":"0053","bool":false,"number":691},{"word":"shelving","_id":"0054","bool":true,"number":222},{"word":"coinmaker","_id":"0055","bool":false,"number":616},{"word":"concile","_id":"0056","bool":true,"number":581},{"word":"Froebelism","_id":"0057","bool":true,"number":324},{"word":"mentocondylial","_id":"0058","bool":false,"number":261},{"word":"penannular","_id":"0059","bool":true,"number":306},{"word":"aftercooler","_id":"0060","bool":false,"number":536},{"word":"Sienese","_id":"0061","bool":true,"number":881},{"word":"Schizotrypanum","_id":"0062","bool":true,"number":722},{"word":"Buddhistic","_id":"0063","bool":true,"number":347},{"word":"lapidescent","_id":"0064","bool":false,"number":138},{"word":"farweltered","_id":"0065","bool":false,"number":63},{"word":"denitrificator","_id":"0066","bool":false,"number":81},{"word":"mousetail","_id":"0067","bool":true,"number":767},{"word":"insee","_id":"0068","bool":true,"number":106},{"word":"copetitioner","_id":"0069","bool":false,"number":358},{"word":"nitrophyte","_id":"0070","bool":false,"number":477},{"word":"endosporous","_id":"0071","bool":false,"number":312},{"word":"atomician","_id":"0072","bool":true,"number":752},{"word":"axospermous","_id":"0073","bool":true,"number":873},{"word":"Cornelius","_id":"0074","bool":false,"number":402},{"word":"teretipronator","_id":"0075","bool":true,"number":497},{"word":"etherin","_id":"0076","bool":true,"number":989},{"word":"prostemmatic","_id":"0077","bool":false,"number":841},{"word":"kenspeckle","_id":"0078","bool":false,"number":878},{"word":"coinclude","_id":"0079","bool":false,"number":981},{"word":"Sigurd","_id":"0080","bool":true,"number":492},{"word":"reafflict","_id":"0081","bool":true,"number":155},{"word":"pneumonolysis","_id":"0082","bool":true,"number":117},{"word":"ornateness","_id":"0083","bool":true,"number":930},{"word":"dotage","_id":"0084","bool":true,"number":659},{"word":"mailbox","_id":"0085","bool":true,"number":479},{"word":"bagging","_id":"0086","bool":true,"number":846},{"word":"estipulate","_id":"0087","bool":false,"number":917},{"word":"Pycnodonti","_id":"0088","bool":false,"number":418},{"word":"Zygomycetes","_id":"0089","bool":true,"number":477},{"word":"marrowish","_id":"0090","bool":false,"number":869},{"word":"dynamoelectric","_id":"0091","bool":true,"number":19},{"word":"idioretinal","_id":"0092","bool":false,"number":523},{"word":"Ustilago","_id":"0093","bool":true,"number":651},{"word":"potestal","_id":"0094","bool":false,"number":156},{"word":"dynamiter","_id":"0095","bool":true,"number":198},{"word":"urushinic","_id":"0096","bool":true,"number":689},{"word":"preconcept","_id":"0097","bool":false,"number":390},{"word":"exonerative","_id":"0098","bool":false,"number":39},{"word":"swallowtail","_id":"0099","bool":true,"number":94},{"word":"virosis","_id":"0100","bool":false,"number":788}]} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"options": { | |
"seq_indexed": true, | |
"keyseq_indexed": true | |
}, | |
"filters": { | |
"skip": "function(doc) { return doc.bool }" | |
}, | |
"views": { | |
"full": { | |
"map": "function(doc) { emit(doc.word, doc); }" | |
}, | |
"skip": { | |
"map": "function(doc) { if(doc.bool) { emit(doc.word, doc.number); }}" | |
}, | |
"count": { | |
"map": "function(doc) { emit(doc.word, 1); }", | |
"reduce": "_count" | |
}, | |
"total": { | |
"map": "function(doc) { emit(doc.word, doc.number); }", | |
"reduce": "function(keys, vals) { return sum(vals); }" | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{"docs":[{ | |
"_id": "_design/ddocN", | |
"views": { | |
"count": { | |
"map": "function(doc) { emit(doc.word, 1); }", | |
"reduce": "_count" | |
}, | |
"skip": { | |
"map": "function(doc) { if(doc.bool) { emit(doc.word, doc.number); }}" | |
} | |
} | |
}, { | |
"_id": "_design/ddoc00", | |
"options": { | |
"seq_indexed": false, | |
"keyseq_indexed": false | |
}, | |
"views": { | |
"count": { | |
"map": "function(doc) { emit(doc.word, 1); }", | |
"reduce": "_count" | |
}, | |
"skip": { | |
"map": "function(doc) { if(doc.bool) { emit(doc.word, doc.number); }}" | |
} | |
} | |
}, { | |
"_id": "_design/ddoc10", | |
"options": { | |
"seq_indexed": true, | |
"keyseq_indexed": false | |
}, | |
"views": { | |
"count": { | |
"map": "function(doc) { emit(doc.word, 1); }", | |
"reduce": "_count" | |
}, | |
"skip": { | |
"map": "function(doc) { if(doc.bool) { emit(doc.word, doc.number); }}" | |
} | |
} | |
}, { | |
"_id": "_design/ddoc01", | |
"options": { | |
"seq_indexed": false, | |
"keyseq_indexed": true | |
}, | |
"views": { | |
"count": { | |
"map": "function(doc) { emit(doc.word, 1); }", | |
"reduce": "_count" | |
}, | |
"skip": { | |
"map": "function(doc) { if(doc.bool) { emit(doc.word, doc.number); }}" | |
} | |
} | |
}, { | |
"_id": "_design/ddoc11", | |
"options": { | |
"seq_indexed": true, | |
"keyseq_indexed": true | |
}, | |
"views": { | |
"count": { | |
"map": "function(doc) { emit(doc.word, 1); }", | |
"reduce": "_count" | |
}, | |
"skip": { | |
"map": "function(doc) { if(doc.bool) { emit(doc.word, doc.number); }}" | |
} | |
} | |
}]} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sub.DEFAULT_GOAL := check | |
.EXPORT_ALL_VARIABLES: | |
CURL_HOME = $(CURDIR) | |
JAR = $(CURDIR)/jar | |
DB = http://localhost:15984 | |
ADM_CRD = '{"username":"admin", "password": "admin"}' | |
USR_CRD = '{"name":"eiri", "password": "eiri"}' | |
.PHONY: check | |
check: | |
curl $(DB) | |
.PHONY: setup | |
setup: | |
curl $(DB)/_session -X POST -d $(ADM_CRD) -c $(JAR) | |
curl $(DB)/_users/org.couchdb.user:eiri -X PUT -d '{"name": "eiri", "password": "eiri", "roles": [], "type": "user"}' -b $(JAR) | jq . | |
bulk.json: | |
@$(CURDIR)/rand_json 50 | jo -a | jq -c '{docs: .}' > bulk.json | |
bulk2.json: | |
@$(CURDIR)/rand_json 50 | jo -a | jq -c '{docs: .}' > bulk2.json | |
.PHONY: create | |
create: bulk.json | |
curl $(DB)/_session -X POST -d $(ADM_CRD) -c $(JAR) | |
curl $(DB)/koi -X DELETE -b $(JAR) | |
curl $(DB)/koi -X PUT -b $(JAR) | |
curl $(DB)/koi/_security -X PUT -d '{"admins":{"names":["eiri"],"roles":["_admin"]}, "members":{"names":["eiri"],"roles":["_admin"]}}' -b $(JAR) | jq . | |
rm -f $(JAR) | |
curl $(DB)/_session -X POST -d $(USR_CRD) -c $(JAR) | |
curl $(DB)/koi/_bulk_docs -X POST -d @bulk.json -b $(JAR) | |
curl $(DB)/koi/_design/ddoc -X PUT -d @ddoc.json -b $(JAR) | |
.PHONY: $(JAR) | |
$(JAR): | |
rm -f $(JAR) | |
curl $(DB)/_session -X POST -d $(USR_CRD) -c $(JAR) | |
.PHONY: all_docs | |
all_docs: $(JAR) | |
curl $(DB)/koi/_all_docs -G -b $(JAR) | jq . | |
curl $(DB)/koi/_all_docs -G -d include_docs=true -d key='"_design/ddoc"' -b $(JAR) | jq . | |
.PHONY: read | |
read: $(JAR) | |
curl $(DB)/koi/_design/ddoc/_view/full -G -d limit=1 -d skip=3 -b $(JAR) | jq . | |
curl $(DB)/koi/_design/ddoc/_view/skip -G -d limit=1 -d skip=3 -b $(JAR) | jq . | |
curl $(DB)/koi/_design/ddoc/_view/count -G -d reduce=true -b $(JAR) | jq . | |
curl $(DB)/koi/_design/ddoc/_view/total -G -d group=true -d group_level=0 -b $(JAR) | jq . | |
.PHONY: changes | |
changes: $(JAR) | |
curl $(DB)/koi/_changes -G -b $(JAR) | |
curl $(DB)/koi/_changes -G -d filter="_view" -d view="ddoc/skip" -b $(JAR) | |
curl $(DB)/koi/_changes -G -d filter="ddoc/skip" -b $(JAR) | |
curl $(DB)/koi/_changes?filter="_selector" -X POST -b $(JAR) -d '{"selector": {"_id": {"$$regex": "^002\\d+"}}}' | |
.PHONY: update | |
update: bulk2.json $(JAR) | |
curl $(DB)/koi/0012?rev=1-a3c5b63b1504f6d0cdf96c81a99fb563 -X DELETE -b $(JAR) | |
curl $(DB)/koi/0023?rev=1-d94129555f75205b363db4ef47ef2aa6 -X DELETE -b $(JAR) | |
curl $(DB)/koi/0041?rev=1-eceb37685151446cb11b771413337449 -X DELETE -b $(JAR) | |
curl $(DB)/koi/_bulk_docs -X POST -d @bulk2.json -b $(JAR) | |
.PHONY: compact | |
compact: $(JAR) | |
curl $(DB)/koi/_compact/ddoc -X POST -b $(JAR) | jq . | |
.PHONY: purge | |
purge: | |
curl $(DB)/_session -X POST -d $(ADM_CRD) -c $(JAR) | |
curl $(DB)/koi/_purge -X POST -d '{"0012": ["1-a3c5b63b1504f6d0cdf96c81a99fb563", "2-1b3049944c1bd5023f4c025ebfc189c5"], "0023": ["1-d94129555f75205b363db4ef47ef2aa6", "2-545d4f2065f34d77285196b3d38e801c"]}' -b $(JAR) | jq . | |
.PHONY: info | |
info: $(JAR) | |
curl $(DB)/koi/_design/ddoc/_info -G -b $(JAR) | jq . | |
.PHONY: delete | |
delete: | |
curl $(DB)/_session -X POST -d $(ADM_CRD) -c $(JAR) | |
curl $(DB)/koi -X DELETE -b $(JAR) | jq . | |
.PHONY: run-all | |
run-all: | |
make delete | |
make create | |
make read | |
make info | |
make changes | |
make update | |
make read | |
make info | |
make changes | |
make compact | |
make read | |
make info | |
make changes | |
make purge | |
make read | |
make info | |
make changes | |
# migration test | |
.PHONY: before | |
before: bulk.json | |
curl $(DB)/_session -X POST -d $(ADM_CRD) -c $(JAR) | |
curl $(DB)/koi -X DELETE -b $(JAR) | |
curl "$(DB)/koi" -X PUT -b $(JAR) | |
curl $(DB)/koi/_security -X PUT -d '{"admins":{"names":["eiri"],"roles":["_admin"]}, "members":{"names":["eiri"],"roles":["_admin"]}}' -b $(JAR) | jq . | |
rm -f $(JAR) | |
curl $(DB)/_session -X POST -d $(USR_CRD) -c $(JAR) | |
curl $(DB)/koi/_bulk_docs -X POST -d @bulk.json -b $(JAR) | |
curl $(DB)/koi/_bulk_docs -X POST -d @ddocs.json -b $(JAR) | |
# read/info | |
make after | |
.PHONY: after | |
after: $(JAR) | |
for d in "ddocN" "ddoc00" "ddoc10" "ddoc01" "ddoc11" ; do \ | |
curl -G -b $(JAR) $(DB)/koi/_design/$$d/_view/count -d reduce=true ; \ | |
curl -G -b $(JAR) $(DB)/koi/_design/$$d/_info ; \ | |
curl -G -b $(JAR) $(DB)/koi/_changes -d filter="_view" -d view="$$d/skip" ; \ | |
done |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# prereq `brew intall coreutils jo` | |
defcount=1 | |
display_usage() { | |
echo -e "Generate NUMBER of random json objects." | |
printf " Usage: %s [NUMBER] (DEFAULT: %s)\n\n" $(basename "$0") $defcount | |
} | |
random_number() { | |
gshuf -i 1-$1 -n 1 | |
} | |
random_boolean() { | |
gshuf -i 0-1 -n 1 | |
} | |
random_word() { | |
gshuf -n 1 /usr/share/dict/words | tr -d '\n' | |
} | |
if [[ ( $@ == "--help") || $@ == "-h" ]] | |
then | |
display_usage | |
exit 0 | |
fi | |
# for i in $(seq 51 100) | |
for i in $(seq ${1:-$defcount}) | |
do | |
jo \ | |
word=$(random_word) \ | |
-s _id=$(printf "%04d" $i) \ | |
bool@$(random_boolean) \ | |
number=$(random_number 1000) | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment