! Copyright (C) 2010 John Benediktsson
! See http://factorcode.org/license.txt for BSD license
-USING: calendar math math.functions memcached memcached.private
-kernel sequences threads tools.test ;
+USING: arrays assocs calendar math math.functions memcached
+memcached.private kernel present sequences system threads
+tools.test ;
IN: memcached.tests
<PRIVATE
: not-found? ( quot -- )
- [ "key not found" = ] must-fail-with ;
+ [ key-not-found? ] must-fail-with ;
+
+: x ( -- str ) cpu present "-x" append ;
+: y ( -- str ) cpu present "-y" append ;
+: z ( -- str ) cpu present "-z" append ;
PRIVATE>
! test simple set get
[ m/flush ] with-memcached
-[ "valuex" "x" m/set ] with-memcached
-[ "valuex" ] [ [ "x" m/get ] with-memcached ] unit-test
+[ "valuex" x m/set ] with-memcached
+[ "valuex" ] [ [ x m/get ] with-memcached ] unit-test
! test flush
[ m/flush ] with-memcached
-[ "valuex" "x" m/set "valuey" "y" m/set ] with-memcached
-[ "valuex" ] [ [ "x" m/get ] with-memcached ] unit-test
-[ "valuey" ] [ [ "y" m/get ] with-memcached ] unit-test
+[ "valuex" x m/set "valuey" y m/set ] with-memcached
+[ "valuex" ] [ [ x m/get ] with-memcached ] unit-test
+[ "valuey" ] [ [ y m/get ] with-memcached ] unit-test
[ m/flush ] with-memcached
-[ [ "x" m/get ] with-memcached ] not-found?
-[ [ "y" m/get ] with-memcached ] not-found?
+[ [ x m/get ] with-memcached ] not-found?
+[ [ y m/get ] with-memcached ] not-found?
! test noop
[ m/noop ] with-memcached
! test delete
[ m/flush ] with-memcached
-[ "valuex" "x" m/set ] with-memcached
-[ "valuex" ] [ [ "x" m/get ] with-memcached ] unit-test
-[ "x" m/delete ] with-memcached
-[ [ "x" m/get ] with-memcached ] not-found?
+[ "valuex" x m/set ] with-memcached
+[ "valuex" ] [ [ x m/get ] with-memcached ] unit-test
+[ x m/delete ] with-memcached
+[ [ x m/get ] with-memcached ] not-found?
! test replace
[ m/flush ] with-memcached
-[ [ "x" m/get ] with-memcached ] not-found?
-[ [ "ex" "x" m/replace ] with-memcached ] not-found?
-[ "ex" "x" m/add ] with-memcached
-[ "ex" ] [ [ "x" m/get ] with-memcached ] unit-test
-[ "ex2" "x" m/replace ] with-memcached
-[ "ex2" ] [ [ "x" m/get ] with-memcached ] unit-test
+[ [ x m/get ] with-memcached ] not-found?
+[ [ "ex" x m/replace ] with-memcached ] not-found?
+[ "ex" x m/add ] with-memcached
+[ "ex" ] [ [ x m/get ] with-memcached ] unit-test
+[ "ex2" x m/replace ] with-memcached
+[ "ex2" ] [ [ x m/get ] with-memcached ] unit-test
! test incr
[ m/flush ] with-memcached
-[ 0 ] [ [ "x" m/incr ] with-memcached ] unit-test
-[ 1 ] [ [ "x" m/incr ] with-memcached ] unit-test
-[ 212 ] [ [ 211 "x" m/incr-val ] with-memcached ] unit-test
-[ 8589934804 ] [ [ 2 33 ^ "x" m/incr-val ] with-memcached ] unit-test
+[ 0 ] [ [ x m/incr ] with-memcached ] unit-test
+[ 1 ] [ [ x m/incr ] with-memcached ] unit-test
+[ 212 ] [ [ 211 x m/incr-val ] with-memcached ] unit-test
+[ 8589934804 ] [ [ 2 33 ^ x m/incr-val ] with-memcached ] unit-test
! test decr
[ m/flush ] with-memcached
-[ "5" "x" m/set ] with-memcached
-[ 4 ] [ [ "x" m/decr ] with-memcached ] unit-test
-[ 0 ] [ [ 211 "x" m/decr-val ] with-memcached ] unit-test
+[ "5" x m/set ] with-memcached
+[ 4 ] [ [ x m/decr ] with-memcached ] unit-test
+[ 0 ] [ [ 211 x m/decr-val ] with-memcached ] unit-test
! test timebombed flush
[ m/flush ] with-memcached
-[ [ "x" m/get ] with-memcached ] not-found?
-[ "valuex" "x" m/set ] with-memcached
-[ "valuex" ] [ [ "x" m/get ] with-memcached ] unit-test
+[ [ x m/get ] with-memcached ] not-found?
+[ "valuex" x m/set ] with-memcached
+[ "valuex" ] [ [ x m/get ] with-memcached ] unit-test
[ 2 m/flush-later ] with-memcached
-[ "valuex" ] [ [ "x" m/get ] with-memcached ] unit-test
+[ "valuex" ] [ [ x m/get ] with-memcached ] unit-test
3 seconds sleep
-[ [ "x" m/get ] with-memcached ] not-found?
+[ [ x m/get ] with-memcached ] not-found?
! test append
[ m/flush ] with-memcached
-[ "some" "x" m/set ] with-memcached
-[ "thing" "x" m/append ] with-memcached
-[ "something" ] [ [ "x" m/get ] with-memcached ] unit-test
+[ "some" x m/set ] with-memcached
+[ "thing" x m/append ] with-memcached
+[ "something" ] [ [ x m/get ] with-memcached ] unit-test
! test prepend
[ m/flush ] with-memcached
-[ "some" "x" m/set ] with-memcached
-[ "thing" "x" m/prepend ] with-memcached
-[ "thingsome" ] [ [ "x" m/get ] with-memcached ] unit-test
+[ "some" x m/set ] with-memcached
+[ "thing" x m/prepend ] with-memcached
+[ "thingsome" ] [ [ x m/get ] with-memcached ] unit-test
! test multi-get
[ m/flush ] with-memcached
-[ H{ } ] [ [ { "x" "y" "z" } m/getseq ] with-memcached ] unit-test
-[ "5" "x" m/set ] with-memcached
-[ "valuex" "y" m/set ] with-memcached
-[ H{ { "x" "5" } { "y" "valuex" } } ]
-[ [ { "x" "y" "z" } m/getseq ] with-memcached ] unit-test
+[ H{ } ] [ [ x y z 3array m/getseq ] with-memcached ] unit-test
+[ "5" x m/set ] with-memcached
+[ "valuex" y m/set ] with-memcached
+[ { "5" "valuex" } ] [
+ [ x y z 3array m/getseq values ] with-memcached
+] unit-test
memcached-server get-global
binary [ call ] with-client ; inline
+ERROR: key-not-found ;
+ERROR: key-exists ;
+ERROR: value-too-large ;
+ERROR: invalid-arguments ;
+ERROR: item-not-stored ;
+ERROR: value-not-numeric ;
+ERROR: unknown-command ;
+ERROR: out-of-memory ;
+
<PRIVATE
! Commands
: check-status ( header -- )
[ 5 ] dip nth {
- { NOT_FOUND [ "key not found" throw ] }
- { EXISTS [ "key exists" throw ] }
- { TOO_LARGE [ "value too large" throw ] }
- { INVALID_ARGS [ "invalid arguments" throw ] }
- { NOT_STORED [ "item not stored" throw ] }
- { NOT_NUMERIC [ "value not numeric" throw ] }
- { UNKNOWN_CMD [ "unknown command" throw ] }
- { MEMORY [ "out of memory" throw ] }
+ { NOT_FOUND [ key-not-found ] }
+ { EXISTS [ key-exists ] }
+ { TOO_LARGE [ value-too-large ] }
+ { INVALID_ARGS [ invalid-arguments ] }
+ { NOT_STORED [ item-not-stored ] }
+ { NOT_NUMERIC [ value-not-numeric ] }
+ { UNKNOWN_CMD [ unknown-command ] }
+ { MEMORY [ out-of-memory ] }
[ drop ]
} case ;