From 6633ad837aa7bf20265613f0d52b586536c6b688 Mon Sep 17 00:00:00 2001 From: Fernando Alvarez Date: Thu, 29 Mar 2018 20:01:15 +0200 Subject: [PATCH 1/5] Update for v0.2 --- piladb.sh | 150 +++++++++++++++++++++++++++++++++++++++---------- piladb_test.sh | 78 ++++++++++++++++++++++--- 2 files changed, 190 insertions(+), 38 deletions(-) diff --git a/piladb.sh b/piladb.sh index e2ba8e7..2e99fef 100644 --- a/piladb.sh +++ b/piladb.sh @@ -32,7 +32,7 @@ _piladb_get () { _require http _require_host || return 1 - http "$PILADB_HOST/$1" + http "$PILADB_HOST/$1?$2" } _piladb_put () { @@ -49,6 +49,13 @@ _piladb_post () { http POST "$PILADB_HOST/$1" "element:=${@:2}" } +_piladb_post_no_payload () { + _require http + _require_host || return 1 + + http POST "$PILADB_HOST/$1" +} + _piladb_delete () { _require http _require_host || return 1 @@ -92,19 +99,19 @@ piladb_help () { piladb_config_set $config_value $config_key # show databases - piladb_show_databases + piladb_databases # create database piladb_create_database $database_name # show database - piladb_show_database $database_name + piladb_database $database_name # delete database piladb_delete_database $database_name # show stacks in database - piladb_show_stack $database_name + piladb_stack $database_name # create stack in database piladb_create_stack $database_name $stack_name @@ -118,18 +125,33 @@ piladb_help () { # PUSH element piladb_PUSH $database_name $stack_name $element + # BASE element + piladb_BASE $database_name $stack_name $element + # POP element piladb_POP $database_name $stack_name # PEEK element piladb_PEEK $database_name $stack_name - # SIZE of stack - piladb_SIZE $database_name $stack_name - # FLUSH stack piladb_FLUSH $database_name $stack_name + # ROTATE stack + piladb_ROTATE $database_name $stack_name + + # ROTATE stack + piladb_ROTATE $database_name $stack_name + + # BLOCK stack + piladb_BLOCK $database_name $stack_name + + # UNBLOCK stack + piladb_UNBLOCK $database_name $stack_name + + # SIZE of stack + piladb_SIZE $database_name $stack_name + requirements: httpie: https://github.com/jkbrzt/httpie#installation @@ -150,18 +172,22 @@ piladb_download () { local DOWNLOAD_URL="https://github.com/fern4lvarez/piladb/releases/download/v${VERSION}/piladb${VERSION}.${OS}-amd64.tar.gz" wget -q "$DOWNLOAD_URL" - _log "Extracting in ${PWD}..." - tar -zxvf "piladb${VERSION}.${OS}-amd64.tar.gz" + if [ $? -ne 0 ]; then + _err_exit "Version ${VERSION} does not exist or error downloading it. Exiting..." + else + _log "Extracting in ${PWD}..." + tar -zxvf "piladb${VERSION}.${OS}-amd64.tar.gz" - _log "Moving binary to ${HOME}/bin..." - mkdir -p "${HOME}/bin" - mv pilad "${HOME}/bin" - export PATH="${PATH}:${HOME}/bin" + _log "Moving binary to ${HOME}/bin..." + mkdir -p "${HOME}/bin" + mv pilad "${HOME}/bin" + export PATH="${PATH}:${HOME}/bin" - _log "Cleanup..." - rm "piladb${VERSION}.${OS}-amd64.tar.gz" + _log "Cleanup..." + rm "piladb${VERSION}.${OS}-amd64.tar.gz" - _log "Done! $(pilad -v)" + _log "Done! $(pilad -v)" + fi } piladb_start () { @@ -226,7 +252,7 @@ piladb_config_set () { fi } -piladb_show_databases () { +piladb_databases () { _piladb_get "databases" } @@ -241,7 +267,7 @@ piladb_create_database () { fi } -piladb_show_database () { +piladb_database () { local DATABASE_NAME="$1" if [ -z "$DATABASE_NAME" ]; then @@ -263,7 +289,7 @@ piladb_delete_database () { fi } -piladb_show_stacks () { +piladb_stacks () { local DATABASE_NAME="$1" if [ -z "$DATABASE_NAME" ]; then @@ -289,9 +315,10 @@ piladb_create_stack () { fi } -piladb_show_stack () { +piladb_stack () { local DATABASE_NAME="$1" local STACK_NAME="$2" + local OP="$3" if [ -z "$DATABASE_NAME" ]; then _log "stacks: please provide a database name" @@ -300,7 +327,7 @@ piladb_show_stack () { _log "stacks: please provide an stack name" _exit_or_return 1 else - _piladb_get "databases/${DATABASE_NAME}/stacks/${STACK_NAME}" + _piladb_get "databases/${DATABASE_NAME}/stacks/${STACK_NAME}" "${OP}" fi } @@ -330,7 +357,7 @@ piladb_PUSH () { elif [ -z "$STACK_NAME" ]; then _log "push: please provide an stack name" _exit_or_return 1 - elif [ -z "${ELEMENT}" ]; then + elif [ -z "$ELEMENT" ]; then _log "push: please provide an element" _exit_or_return 1 else @@ -338,6 +365,14 @@ piladb_PUSH () { fi } +piladb_BASE () { + local DATABASE_NAME="$1" + local STACK_NAME="$2" + local ELEMENT="${@:3}" + + piladb_PUSH "$DATABASE_NAME" "$STACK_NAME?base" "$ELEMENT" +} + piladb_POP () { local DATABASE_NAME="$1" local STACK_NAME="$2" @@ -357,6 +392,13 @@ piladb_PEEK () { local DATABASE_NAME="$1" local STACK_NAME="$2" + piladb_stack "$DATABASE_NAME" "$STACK_NAME" "peek" +} + +piladb_FLUSH () { + local DATABASE_NAME="$1" + local STACK_NAME="$2" + if [ -z "$DATABASE_NAME" ]; then _log "push: please provide a database name" _exit_or_return 1 @@ -364,11 +406,11 @@ piladb_PEEK () { _log "push: please provide an stack name" _exit_or_return 1 else - _piladb_get "databases/${DATABASE_NAME}/stacks/${STACK_NAME}?peek" + _piladb_delete "databases/${DATABASE_NAME}/stacks/${STACK_NAME}?flush" fi } -piladb_SIZE () { +piladb_ROTATE () { local DATABASE_NAME="$1" local STACK_NAME="$2" @@ -379,21 +421,71 @@ piladb_SIZE () { _log "push: please provide an stack name" _exit_or_return 1 else - _piladb_get "databases/${DATABASE_NAME}/stacks/${STACK_NAME}?size" + _piladb_post_no_payload "databases/${DATABASE_NAME}/stacks/${STACK_NAME}?rotate" fi } -piladb_FLUSH () { +piladb_BLOCK () { local DATABASE_NAME="$1" local STACK_NAME="$2" if [ -z "$DATABASE_NAME" ]; then - _log "push: please provide a database name" + _log "stacks: please provide a database name" _exit_or_return 1 elif [ -z "$STACK_NAME" ]; then - _log "push: please provide an stack name" + _log "stacks: please provide an stack name" _exit_or_return 1 else - _piladb_delete "databases/${DATABASE_NAME}/stacks/${STACK_NAME}?flush" + _piladb_put "databases/${DATABASE_NAME}/stacks/$STACK_NAME?block" + fi +} + +piladb_UNBLOCK () { + local DATABASE_NAME="$1" + local STACK_NAME="$2" + + if [ -z "$DATABASE_NAME" ]; then + _log "stacks: please provide a database name" + _exit_or_return 1 + elif [ -z "$STACK_NAME" ]; then + _log "stacks: please provide an stack name" + _exit_or_return 1 + else + _piladb_put "databases/${DATABASE_NAME}/stacks/$STACK_NAME?unblock" fi } + +piladb_SIZE () { + local DATABASE_NAME="$1" + local STACK_NAME="$2" + + piladb_stack "$DATABASE_NAME" "$STACK_NAME" "size" +} + +piladb_EMPTY () { + local DATABASE_NAME="$1" + local STACK_NAME="$2" + + piladb_stack "$DATABASE_NAME" "$STACK_NAME" "empty" +} + +piladb_FULL () { + local DATABASE_NAME="$1" + local STACK_NAME="$2" + + piladb_stack "$DATABASE_NAME" "$STACK_NAME" "full" +} + +### ALIASES + +alias PUSH='piladb_PUSH' +alias BASE='piladb_BASE' +alias POP='piladb_POP' +alias PEEK='piladb_PEEK' +alias FLUSH='piladb_FLUSH' +alias ROTATE='piladb_ROTATE' +alias BLOCK='piladb_BLOCK' +alias UNBLOCK='piladb_UNBLOCK' +alias SIZE='piladb_SIZE' +alias EMPTY='piladb_EMPTY' +alias FULL='piladb_FULL' diff --git a/piladb_test.sh b/piladb_test.sh index 34a9973..949bc4a 100644 --- a/piladb_test.sh +++ b/piladb_test.sh @@ -8,7 +8,7 @@ _require jq || exit 1 # download pilad from Github -piladb_download +piladb_download 0.2.0-alpha.20180328 linux # start test pilad @@ -29,6 +29,7 @@ pid=$(piladb_status | jq '.pid') # test config + piladb_config max_stack_size=$(piladb_config_get MAX_STACK_SIZE | jq '.element') @@ -50,7 +51,7 @@ fi # test databases -number_of_databases=$(piladb_show_databases | jq '.number_of_databases') +number_of_databases=$(piladb_databases | jq '.number_of_databases') if [ "$number_of_databases" -ne "0" ]; then _log "ERROR: no databases expected, got $number_of_databases" piladb_stop $pid @@ -61,7 +62,7 @@ piladb_create_database db1 piladb_create_database db2 piladb_create_database db3 -number_of_databases=$(piladb_show_databases | jq '.number_of_databases') +number_of_databases=$(piladb_databases | jq '.number_of_databases') if [ "$number_of_databases" -ne "3" ]; then _log "ERROR: number of databases is $number_of_databases, expected 3" piladb_stop $pid @@ -69,7 +70,7 @@ if [ "$number_of_databases" -ne "3" ]; then fi piladb_delete_database db2 -number_of_databases=$(piladb_show_database db2 | jq '.number_of_databases') +number_of_databases=$(piladb_database db2 | jq '.number_of_databases') if [ -n "$number_of_databases" ]; then _log "ERROR: database db2 exists" piladb_stop $pid @@ -83,19 +84,20 @@ piladb_create_stack db1 mystack1 piladb_create_stack db1 mystack2 piladb_create_stack db1 mystack3 -number_of_stacks=$(piladb_show_database db1 | jq '.number_of_stacks') +number_of_stacks=$(piladb_database db1 | jq '.number_of_stacks') if [ "$number_of_stacks" -ne "3" ]; then _log "ERROR: number of stacks is $number_of_stacks, expected 3" piladb_stop $pid exit 1 fi -piladb_show_stack db1 mystack1 +piladb_stack db1 mystack1 piladb_PUSH db1 mystack1 false piladb_PUSH db1 mystack1 '{"json":"example"}' piladb_PUSH db1 mystack1 1 piladb_PUSH db1 mystack1 '"this is a string"' +piladb_BASE db1 mystack1 '[1,2,3,5,8,13]' popped=$(piladb_POP db1 mystack1 | jq '.element') if [ "$popped" != '"this is a string"' ]; then @@ -112,8 +114,8 @@ if [ "$peek" != 1 ]; then fi size=$(piladb_SIZE db1 mystack1) -if [ "$size" -ne 3 ]; then - _log "ERROR: size is $size, expected 2" +if [ "$size" -ne 4 ]; then + _log "ERROR: size is $size, expected 4" piladb_stop $pid exit 1 fi @@ -127,15 +129,73 @@ if [ "$size" -ne "0" ]; then exit 1 fi +empty=$(piladb_EMPTY db1 mystack1) +if [ "$empty" != true ]; then + _log "ERROR: empty is $empty, expected true" + piladb_stop $pid + exit 1 +fi + piladb_delete_stack db1 mystack2 -number_of_stacks=$(piladb_show_database db1 | jq '.number_of_stacks') +number_of_stacks=$(piladb_database db1 | jq '.number_of_stacks') if [ "$number_of_stacks" -ne "2" ]; then _log "ERROR: number of stacks is $number_of_stacks, expected 2" piladb_stop $pid exit 1 fi +# test MAX_SIZE_STACK and FULL + +piladb_config_set MAX_STACK_SIZE 3 +piladb_create_stack db1 maxsize + +full=$(piladb_FULL db1 maxsize) +if [ "$full" = true ]; then + _log "ERROR: full is $full, expected false" + piladb_stop $pid + exit 1 +fi + +piladb_PUSH db1 maxsize 1 +piladb_PUSH db1 maxsize 2 +piladb_PUSH db1 maxsize 3 + +full=$(piladb_FULL db1 maxsize) +if [ "$full" != true ]; then + _log "ERROR: full is $full, expected true" + piladb_stop $pid + exit 1 +fi + +# test PUSH_WHEN_FULL + +piladb_PUSH db1 maxsize 4 + +peek=$(piladb_PEEK db1 maxsize | jq '.element') +if [ "$peek" != 3 ]; then + _log "ERROR: peek is $peek, expected 3" + piladb_stop $pid + exit 1 +fi + +piladb_config_set PUSH_WHEN_FULL true + +piladb_PUSH db1 maxsize 4 + +peek=$(piladb_PEEK db1 maxsize | jq '.element') +if [ "$peek" != 4 ]; then + _log "ERROR: peek is $peek, expected 4" + piladb_stop $pid + exit 1 +fi + +size=$(piladb_SIZE db1 maxsize) +if [ "$size" -ne "3" ]; then + _log "ERROR: size is $size, expected 3" + piladb_stop $pid + exit 1 +fi # cleanup From 63eb893d03377ddf3785b9469aa08fe329685da0 Mon Sep 17 00:00:00 2001 From: Fernando Alvarez Date: Thu, 29 Mar 2018 20:15:57 +0200 Subject: [PATCH 2/5] Update usage --- README.md | 1 - piladb.sh | 15 +++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f2040d8..33e1d28 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,6 @@ Requirements * Unix/Linux machine with bash, zsh or similar shell in use. * HTTPie: https://github.com/jkbrzt/httpie#installation -* `PILADB_HOST` set for remote server, e.g. `export PILADB_HOST=piladb.example.org` Installation ------------ diff --git a/piladb.sh b/piladb.sh index 2e99fef..d96f865 100644 --- a/piladb.sh +++ b/piladb.sh @@ -68,6 +68,11 @@ _piladb_delete () { piladb_help () { _log 'usage: piladb_* + # if you want to use piladb in a remote host, + # you can set PILADB_HOST for that purpose. + # e.g. export PILADB_HOST=my.piladb.server:8080 + # default value is 127.0.0.1:1205 + # download pilad in $HOME/bin and add it to PATH # version: default is 0.1.5 # os: linux, darwin. default is linux. @@ -140,9 +145,6 @@ piladb_help () { # ROTATE stack piladb_ROTATE $database_name $stack_name - # ROTATE stack - piladb_ROTATE $database_name $stack_name - # BLOCK stack piladb_BLOCK $database_name $stack_name @@ -152,10 +154,15 @@ piladb_help () { # SIZE of stack piladb_SIZE $database_name $stack_name + # Stack is EMPTY + piladb_SIZE $database_name $stack_name + + # Stack is FULL + piladb_FULL $database_name $stack_name + requirements: httpie: https://github.com/jkbrzt/httpie#installation - PILADB_HOST set, e.g. export PILADB_HOST=127.0.0.1:1205 # mandatory for remote server thank you! From 2073ff41c5725956d5efd276813a34db44c6f77e Mon Sep 17 00:00:00 2001 From: Fernando Alvarez Date: Thu, 29 Mar 2018 20:24:41 +0200 Subject: [PATCH 3/5] Update README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 33e1d28..34bf166 100644 --- a/README.md +++ b/README.md @@ -33,8 +33,8 @@ Run `bash piladb_test.sh`. Examples -------- -Start a local server, create a database and a stack, `PUSH` random number -from 1 to 10, and stop the server: +Start a local server, create a database and a stack, `PUSH` an integer, a string +a boolean and a JSON object, and stop the server: ```bash #!/bin/bash From de1b23bb929872abc8a6d1d2f3f2565edd317b6d Mon Sep 17 00:00:00 2001 From: Fernando Alvarez Date: Mon, 2 Apr 2018 17:39:09 +0200 Subject: [PATCH 4/5] Add small fixes --- piladb.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/piladb.sh b/piladb.sh index d96f865..82f7720 100644 --- a/piladb.sh +++ b/piladb.sh @@ -251,7 +251,7 @@ piladb_config_set () { if [ -z "$CONFIG_KEY" ]; then _log "config: please provide a config key" _exit_or_return 1 - elif [ -z "${CONFIG_VALUE}" ]; then + elif [ -z "$CONFIG_VALUE" ]; then _log "config: please provide a config value" _exit_or_return 1 else @@ -359,13 +359,13 @@ piladb_PUSH () { local ELEMENT="${@:3}" if [ -z "$DATABASE_NAME" ]; then - _log "push: please provide a database name" + _log "push/base: please provide a database name" _exit_or_return 1 elif [ -z "$STACK_NAME" ]; then - _log "push: please provide an stack name" + _log "push/base: please provide an stack name" _exit_or_return 1 elif [ -z "$ELEMENT" ]; then - _log "push: please provide an element" + _log "push/base: please provide an element" _exit_or_return 1 else _piladb_post "databases/${DATABASE_NAME}/stacks/${STACK_NAME}" "$ELEMENT" @@ -385,10 +385,10 @@ piladb_POP () { local STACK_NAME="$2" if [ -z "$DATABASE_NAME" ]; then - _log "push: please provide a database name" + _log "pop: please provide a database name" _exit_or_return 1 elif [ -z "$STACK_NAME" ]; then - _log "push: please provide an stack name" + _log "pop: please provide an stack name" _exit_or_return 1 else _piladb_delete "databases/${DATABASE_NAME}/stacks/${STACK_NAME}" @@ -407,10 +407,10 @@ piladb_FLUSH () { local STACK_NAME="$2" if [ -z "$DATABASE_NAME" ]; then - _log "push: please provide a database name" + _log "flush: please provide a database name" _exit_or_return 1 elif [ -z "$STACK_NAME" ]; then - _log "push: please provide an stack name" + _log "flush: please provide an stack name" _exit_or_return 1 else _piladb_delete "databases/${DATABASE_NAME}/stacks/${STACK_NAME}?flush" @@ -437,10 +437,10 @@ piladb_BLOCK () { local STACK_NAME="$2" if [ -z "$DATABASE_NAME" ]; then - _log "stacks: please provide a database name" + _log "block: please provide a database name" _exit_or_return 1 elif [ -z "$STACK_NAME" ]; then - _log "stacks: please provide an stack name" + _log "block: please provide an stack name" _exit_or_return 1 else _piladb_put "databases/${DATABASE_NAME}/stacks/$STACK_NAME?block" @@ -452,10 +452,10 @@ piladb_UNBLOCK () { local STACK_NAME="$2" if [ -z "$DATABASE_NAME" ]; then - _log "stacks: please provide a database name" + _log "unblock: please provide a database name" _exit_or_return 1 elif [ -z "$STACK_NAME" ]; then - _log "stacks: please provide an stack name" + _log "unblock: please provide an stack name" _exit_or_return 1 else _piladb_put "databases/${DATABASE_NAME}/stacks/$STACK_NAME?unblock" From 6da92d1644b81a7c6247e491efc2080c15d30608 Mon Sep 17 00:00:00 2001 From: Fernando Alvarez Date: Sat, 7 Apr 2018 18:15:06 +0200 Subject: [PATCH 5/5] Update version of pilad to test against --- piladb_test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/piladb_test.sh b/piladb_test.sh index 949bc4a..e6a1c82 100644 --- a/piladb_test.sh +++ b/piladb_test.sh @@ -8,7 +8,7 @@ _require jq || exit 1 # download pilad from Github -piladb_download 0.2.0-alpha.20180328 linux +piladb_download 0.2.0-alpha.20180407 linux # start test pilad