Forráskód Böngészése

Changed tests and keys
Changed timeout from mus -> ms

have not removed locking module or renamed those functions, yet.

Signed-off-by: James Noss <james.noss@lexisnexis.com>

James Noss 10 éve
szülő
commit
1e44578b74

+ 24 - 23
plugins/redis/README.md

@@ -47,36 +47,36 @@ Here is a list of the core plugin **functions**.
 
 ###Set
 ```
-SetUnicode( CONST VARSTRING key, CONST UNICODE value, CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-SetString(  CONST VARSTRING key, CONST STRING value,  CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-SetUtf8(    CONST VARSTRING key, CONST UTF8 value,    CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-SetBoolean( CONST VARSTRING key, BOOLEAN value,       CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-SetReal(    CONST VARSTRING key, REAL value,          CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-SetInteger( CONST VARSTRING key, INTEGER value,       CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-SetUnsigned(CONST VARSTRING key, UNSIGNED value,      CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-SetData(    CONST VARSTRING key, CONST DATA value,    CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
+SetUnicode( CONST VARSTRING key, CONST UNICODE value, CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+SetString(  CONST VARSTRING key, CONST STRING value,  CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+SetUtf8(    CONST VARSTRING key, CONST UTF8 value,    CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+SetBoolean( CONST VARSTRING key, BOOLEAN value,       CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+SetReal(    CONST VARSTRING key, REAL value,          CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+SetInteger( CONST VARSTRING key, INTEGER value,       CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+SetUnsigned(CONST VARSTRING key, UNSIGNED value,      CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+SetData(    CONST VARSTRING key, CONST DATA value,    CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
 ```
 
 ###Get
 ```
-INTEGER8   GetInteger(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-UNSIGNED8 GetUnsigned(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-STRING      GetString(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-UNICODE    GetUnicode(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-UTF8          GetUtf8(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-BOOLEAN    GetBoolean(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-REAL          GetReal(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-DATA          GetData(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
+INTEGER8   GetInteger(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+UNSIGNED8 GetUnsigned(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+STRING      GetString(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+UNICODE    GetUnicode(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+UTF8          GetUtf8(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+BOOLEAN    GetBoolean(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+REAL          GetReal(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+DATA          GetData(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
 ```
 
 ###Utility
 ```
-BOOLEAN Exists(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-FlushDB(CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-Del(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-Persist(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-Expire(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
-INTEGER DBSize(CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000)
+BOOLEAN Exists(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+FlushDB(CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+Del(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+Persist(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+Expire(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
+INTEGER DBSize(CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000)
 ```
 
 The core points to note here are:
@@ -85,8 +85,9 @@ The core points to note here are:
    STRING of length 8, set with SetString, being successfully retrieved from the cache via GetInteger without an **ECL** exception being thrown.
    * `CONST VARSTRING options` passes the server **IP** and **port** to the plugin in the *strict* format - `--SERVER=<ip>:<port>`. If `options` is empty, the default
    127.0.0.1:6379 is used. *Note:* 6379 is the default port for **redis-server**.
-   * `UNSIGNED timeout` has units micro seconds and has a default value of 1 second. This is not a timeout duration for an entire plugin call but rather that set for each
+   * `UNSIGNED timeout` has units *ms* and has a default value of 1 second. This is not a timeout duration for an entire plugin call but rather that set for each
    communication transaction with the redis server. *c.f.* 'Behaviour and Implementation Details' below.
+   * `UNSIGNED expire` has a default of **0**, i.e. *forever*.
 
 ###The redisServer MODULE
 To avoid the combersom and unnecessary need to constantly pass `options` and `password` with each function call, the module `redisServer` can be imported to effectively 

+ 33 - 33
plugins/redis/lib_redis.ecllib

@@ -17,46 +17,46 @@
 
 
 EXPORT sync := SERVICE : plugin('redis'), namespace('RedisPlugin')
-  SetUnicode( CONST VARSTRING key, CONST UNICODE value, CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRSetUChar';
-  SetString(  CONST VARSTRING key, CONST STRING value,  CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRSetStr';
-  SetUtf8(    CONST VARSTRING key, CONST UTF8 value,    CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRSetUtf8';
-  SetBoolean( CONST VARSTRING key, BOOLEAN value,       CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRSetBool';
-  SetReal(    CONST VARSTRING key, REAL value,          CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRSetReal';
-  SetInteger( CONST VARSTRING key, INTEGER value,       CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRSetInt';
-  SetUnsigned(CONST VARSTRING key, UNSIGNED value,      CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRSetUInt';
-  SetData(    CONST VARSTRING key, CONST DATA value,    CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRSetData';
-
-  INTEGER8   GetInteger(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRGetInt8';
-  UNSIGNED8 GetUnsigned(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRGetUint8';
-  STRING      GetString(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRGetStr';
-  UNICODE    GetUnicode(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRGetUChar';
-  UTF8          GetUtf8(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRGetUtf8';
-  BOOLEAN    GetBoolean(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRGetBool';
-  REAL          GetReal(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRGetDouble';
-  DATA          GetData(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncRGetData';
-
-  BOOLEAN Exists(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='RExist';
-  FlushDB(CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='RClear';
-  Del(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='RDel';
-  Delete(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='RDel';
-  Persist(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='RPersist';
-  Expire(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='RExpire';
-  INTEGER DBSize(CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='RDBSize';
+  SetUnicode( CONST VARSTRING key, CONST UNICODE value, CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,action,context,entrypoint='SyncRSetUChar';
+  SetString(  CONST VARSTRING key, CONST STRING value,  CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,action,context,entrypoint='SyncRSetStr';
+  SetUtf8(    CONST VARSTRING key, CONST UTF8 value,    CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,action,context,entrypoint='SyncRSetUtf8';
+  SetBoolean( CONST VARSTRING key, BOOLEAN value,       CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,action,context,entrypoint='SyncRSetBool';
+  SetReal(    CONST VARSTRING key, REAL value,          CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,action,context,entrypoint='SyncRSetReal';
+  SetInteger( CONST VARSTRING key, INTEGER value,       CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,action,context,entrypoint='SyncRSetInt';
+  SetUnsigned(CONST VARSTRING key, UNSIGNED value,      CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,action,context,entrypoint='SyncRSetUInt';
+  SetData(    CONST VARSTRING key, CONST DATA value,    CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,action,context,entrypoint='SyncRSetData';
+
+  INTEGER8   GetInteger(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='SyncRGetInt8';
+  UNSIGNED8 GetUnsigned(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='SyncRGetUint8';
+  STRING      GetString(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='SyncRGetStr';
+  UNICODE    GetUnicode(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='SyncRGetUChar';
+  UTF8          GetUtf8(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='SyncRGetUtf8';
+  BOOLEAN    GetBoolean(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='SyncRGetBool';
+  REAL          GetReal(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='SyncRGetDouble';
+  DATA          GetData(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='SyncRGetData';
+
+  BOOLEAN Exists(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='RExist';
+  FlushDB(CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,action,context,entrypoint='RClear';
+  Del(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,action,context,entrypoint='RDel';
+  Delete(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,action,context,entrypoint='RDel';
+  Persist(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,action,context,entrypoint='RPersist';
+  Expire(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,action,context,entrypoint='RExpire';
+  INTEGER DBSize(CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='RDBSize';
 END;
 
 EXPORT locking := SERVICE : plugin('redis'), namespace('RedisPlugin')
-  STRING   SetString(  CONST VARSTRING key, CONST STRING value,  CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncLockRSetStr';
-  UNICODE  SetUnicode( CONST VARSTRING key, CONST UNICODE value, CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncLockRSetUChar';
-  UTF8     SetUtf8(    CONST VARSTRING key, CONST UTF8 value,    CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncLockRSetUtf8';
+  STRING   SetString(  CONST VARSTRING key, CONST STRING value,  CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='SyncLockRSetStr';
+  UNICODE  SetUnicode( CONST VARSTRING key, CONST UNICODE value, CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='SyncLockRSetUChar';
+  UTF8     SetUtf8(    CONST VARSTRING key, CONST UTF8 value,    CONST VARSTRING options, UNSIGNED database = 0, UNSIGNED4 expire = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='SyncLockRSetUtf8';
 
-  STRING      GetString(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,once,context,entrypoint='SyncLockRGetStr';
-  UNICODE    GetUnicode(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,once,context,entrypoint='SyncLockRGetUChar';
-  UTF8          GetUtf8(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,once,context,entrypoint='SyncLockRGetUtf8';
+  STRING      GetString(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='SyncLockRGetStr';
+  UNICODE    GetUnicode(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='SyncLockRGetUChar';
+  UTF8          GetUtf8(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,once,context,entrypoint='SyncLockRGetUtf8';
 
-  Unlock(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000000) : cpp,action,context,entrypoint='SyncLockRUnlock';
+  Unlock(CONST VARSTRING key, CONST VARSTRING options, UNSIGNED database = 0, CONST VARSTRING password = '', UNSIGNED timeout = 1000) : cpp,action,context,entrypoint='SyncLockRUnlock';
 END;
 
-EXPORT RedisServer(VARSTRING options, VARSTRING password = '', UNSIGNED timeout = 1000000) := MODULE
+EXPORT RedisServer(VARSTRING options, VARSTRING password = '', UNSIGNED timeout = 1000) := MODULE
   EXPORT  SetUnicode(VARSTRING key, UNICODE value,  UNSIGNED database = 0, UNSIGNED4 expire = 0) := sync.SetUnicode (key, value, options, database, expire, password, timeout);
   EXPORT   SetString(VARSTRING key, STRING value,   UNSIGNED database = 0, UNSIGNED4 expire = 0) := sync.SetString  (key, value, options, database, expire, password, timeout);
   EXPORT     SetUtf8(VARSTRING key, UTF8 value,     UNSIGNED database = 0, UNSIGNED4 expire = 0) := sync.SetUtf8    (key, value, options, database, expire, password, timeout);

+ 5 - 5
plugins/redis/redis.cpp

@@ -47,7 +47,7 @@ static __thread ThreadTermFunc threadHookChain;
 StringBuffer & appendExpire(StringBuffer & buffer, unsigned expire)
 {
     if (expire > 0)
-        buffer.append(" EX ").append(expire/1000000);
+        buffer.append(" EX ").append(expire/1000);
     return buffer;
 }
 class Reply : public CInterface
@@ -188,7 +188,7 @@ Connection::Connection(ICodeContext * ctx, const char * _options, const char * _
 }
 void Connection::connect(ICodeContext * ctx, unsigned __int64 _database, const char * password)
 {
-    struct timeval to = { timeout/1000000, timeout%1000000 };
+    struct timeval to = { timeout/1000, timeout%1000 };
     context = redisConnectWithTimeout(ip.str(), port, to);
     redisSetTimeout(context, to);
     assertConnection();
@@ -331,7 +331,7 @@ void Connection::updateTimeout(unsigned __int64 _timeout)
         return;
     assertConnection();
     timeout = _timeout;
-    struct timeval to = { timeout/1000000, timeout%1000000 };
+    struct timeval to = { timeout/1000, timeout%1000 };
     assertex(context);
     if (redisSetTimeout(context, to) != REDIS_OK)
     {
@@ -473,7 +473,7 @@ void Connection::persist(ICodeContext * ctx, const char * key)
 }
 void Connection::expire(ICodeContext * ctx, const char * key, unsigned _expire)
 {
-    OwnedReply reply = Reply::createReply(redisCommand(context, "EXPIRE %b %u", key, strlen(key), _expire/1000000));
+    OwnedReply reply = Reply::createReply(redisCommand(context, "EXPIRE %b %u", key, strlen(key), _expire/1000));
     assertOnCommandErrorWithKey(reply->query(), "Expire", key);
 }
 bool Connection::exists(ICodeContext * ctx, const char * key)
@@ -711,7 +711,7 @@ void Connection::encodeChannel(StringBuffer & channel, const char * key) const
 bool Connection::lock(ICodeContext * ctx, const char * key, const char * channel)
 {
     StringBuffer cmd("SET %b %b NX EX ");
-    cmd.append(timeout/1000000);
+    cmd.append(timeout/1000);
 
     OwnedReply reply = Reply::createReply(redisCommand(context, cmd.str(), key, strlen(key), channel, strlen(channel)));
     assertOnError(reply->query(), cmd.append(" of the key '").append(key).append("' failed"));

+ 25 - 25
testing/regress/ecl/key/redissynctest.xml

@@ -5,82 +5,82 @@
  <Row><Result_2>3.14159265359</Result_2></Row>
 </Dataset>
 <Dataset name='Result 3'>
- <Row><Result_3>9.869604401090658</Result_3></Row>
+ <Row><Result_3>4614256656552046314</Result_3></Row>
 </Dataset>
 <Dataset name='Result 4'>
- <Row><Result_4>123456789</Result_4></Row>
+ <Row><Result_4>9.869604401090658</Result_4></Row>
 </Dataset>
 <Dataset name='Result 5'>
- <Row><Result_5>9.869604401090658</Result_5></Row>
+ <Row><Result_5>123456789</Result_5></Row>
 </Dataset>
 <Dataset name='Result 6'>
- <Row><Result_6>123456789</Result_6></Row>
+ <Row><Result_6>9.869604401090658</Result_6></Row>
 </Dataset>
 <Dataset name='Result 7'>
- <Row><Result_7>7</Result_7></Row>
+ <Row><Result_7>123456789</Result_7></Row>
 </Dataset>
 <Dataset name='Result 8'>
- <Row><Result_8>supercalifragilisticexpialidocious</Result_8></Row>
+ <Row><Result_8>7</Result_8></Row>
 </Dataset>
 <Dataset name='Result 9'>
- <Row><Result_9>אבגדהוזחטיךכלםמןנסעףפץצקרשת</Result_9></Row>
+ <Row><Result_9>supercalifragilisticexpialidocious</Result_9></Row>
 </Dataset>
 <Dataset name='Result 10'>
- <Row><Result_10>אבגדהוזחטיךכלםמןנסעףפץצקרשת</Result_10></Row>
+ <Row><Result_10>false</Result_10></Row>
 </Dataset>
 <Dataset name='Result 11'>
- <Row><Result_11>D790D791D792D793D794D795D796D798D799D79AD79BD79CD79DD79DD79ED79FD7A0D7A1D7A2D7A3D7A4D7A5D7A6D7A7D7A8D7A9D7AA</Result_11></Row>
+ <Row><Result_11>אבגדהוזחטיךכלםמןנסעףפץצקרשת</Result_11></Row>
 </Dataset>
 <Dataset name='Result 12'>
- <Row><Result_12>true</Result_12></Row>
+ <Row><Result_12>אבגדהוזחטיךכלםמןנסעףפץצקרשת</Result_12></Row>
 </Dataset>
 <Dataset name='Result 13'>
- <Row><Result_13>false</Result_13></Row>
+ <Row><Result_13>true</Result_13></Row>
 </Dataset>
 <Dataset name='Result 14'>
- <Row><Result_14>7523094288207667809</Result_14></Row>
+ <Row><Result_14>false</Result_14></Row>
 </Dataset>
 <Dataset name='Result 15'>
- <Row><Result_15>true</Result_15></Row>
+ <Row><Result_15>D790D791D792D793D794D795D796D798D799D79AD79BD79CD79DD79DD79ED79FD7A0D7A1D7A2D7A3D7A4D7A5D7A6D7A7D7A8D7A9D7AA</Result_15></Row>
 </Dataset>
 <Dataset name='Result 16'>
- <Row><Result_16>false</Result_16></Row>
+ <Row><Result_16>7523094288207667809</Result_16></Row>
 </Dataset>
 <Dataset name='Result 17'>
- <Row><Result_17>true</Result_17></Row>
+ <Row><Result_17>false</Result_17></Row>
 </Dataset>
 <Dataset name='Result 18'>
- <Row><Result_18>true</Result_18></Row>
+ <Row><Result_18>false</Result_18></Row>
 </Dataset>
 <Dataset name='Result 19'>
- <Row><Result_19>4614256656552046314</Result_19></Row>
+ <Row><Result_19>true</Result_19></Row>
 </Dataset>
 <Dataset name='Result 20'>
  <Row><Result_20>true</Result_20></Row>
 </Dataset>
 <Dataset name='Result 21'>
- <Row><Result_21>false</Result_21></Row>
+ <Row><Result_21>true</Result_21></Row>
 </Dataset>
 <Dataset name='Result 22'>
- <Row><Result_22>Woof</Result_22></Row>
+ <Row><Result_22>false</Result_22></Row>
 </Dataset>
 <Dataset name='Result 23'>
- <Row><Result_23>Grrrr</Result_23></Row>
+ <Row><Result_23>Woof</Result_23></Row>
 </Dataset>
 <Dataset name='Result 24'>
- <Row><Result_24>Woof-Woof</Result_24></Row>
+ <Row><Result_24>Grrrr</Result_24></Row>
 </Dataset>
 <Dataset name='Result 25'>
- <Row><Result_25>9</Result_25></Row>
+ <Row><Result_25>Woof-Woof</Result_25></Row>
 </Dataset>
 <Dataset name='Result 26'>
- <Row><Result_26>2</Result_26></Row>
+ <Row><Result_26>5</Result_26></Row>
 </Dataset>
 <Dataset name='Result 27'>
- <Row><Result_27>0</Result_27></Row>
+ <Row><Result_27>2</Result_27></Row>
 </Dataset>
 <Dataset name='Result 28'>
- <Row><Result_28>false</Result_28></Row>
+ <Row><Result_28>0</Result_28></Row>
 </Dataset>
 <Dataset name='Result 29'>
  <Row><Result_29>300</Result_29></Row>

+ 21 - 24
testing/regress/ecl/redislockingtest.ecl

@@ -16,21 +16,22 @@
 ############################################################################## */
 
 IMPORT redisServer FROM lib_redis;
+IMPORT Std;
 
 STRING server := '--SERVER=127.0.0.1:6379';
 STRING password := 'foobared';
 myRedis := redisServer(server, password);
 
 myFuncStr(STRING key) := FUNCTION
- value := myRedis.getString(key);
+ value := myRedis.GetString(key);
  return value;
 END;
 myFuncUtf8(STRING key) := FUNCTION
- value := myRedis.getUtf8(key);
+ value := myRedis.GetUtf8(key);
  return value;
 END;
 myFuncUni(STRING key) := FUNCTION
- value := myRedis.getUnicode(key);
+ value := myRedis.GetUnicode(key);
  return value;
 END;
 
@@ -47,10 +48,6 @@ getUnicode(STRING key, STRING key2, myFuncUni func) := FUNCTION
     RETURN IF (LENGTH(value) = 0, myRedis.locking.SetUnicode(key, func(key2)), value);
 END;
 
-CSleep(INTEGER duration) := BEGINC++
-    sleep(duration);
-ENDC++;
-
 //Test compatibiltiy between locking and normal functions.
 SEQUENTIAL(
     myRedis.FlushDB(),
@@ -58,46 +55,46 @@ SEQUENTIAL(
     myRedis.GetUtf8('utf8'),
     myRedis.locking.GetUtf8('utf8'),
     myRedis.FlushDB(),
-    myRedis.locking.SetUtf8('utf8', U'אבגדהוזחטיךכלםמןנסעףפץצקרשת'),
-    myRedis.GetUtf8('utf8'),
-    myRedis.locking.GetUtf8('utf8'),
+    myRedis.locking.SetUtf8('utf8-2', U'אבגדהוזחטיךכלםמןנסעףפץצקרשת'),
+    myRedis.GetUtf8('utf8-2'),
+    myRedis.locking.GetUtf8('utf8-2'),
     myRedis.FlushDB(),
 
     myRedis.SetUnicode('unicode', U'אבגדהוזחטיךכלםמןנסעףפץצקרשת'),
     myRedis.GetUnicode('unicode'),
     myRedis.locking.GetUnicode('unicode'),
     myRedis.FlushDB(),
-    myRedis.locking.SetUnicode('unicode', U'אבגדהוזחטיךכלםמןנסעףפץצקרשת'),
-    myRedis.GetUnicode('unicode'),
-    myRedis.locking.GetUnicode('unicode'),
+    myRedis.locking.SetUnicode('unicode-2', U'אבגדהוזחטיךכלםמןנסעףפץצקרשת'),
+    myRedis.GetUnicode('unicode-2'),
+    myRedis.locking.GetUnicode('unicode-2'),
     myRedis.FlushDB()
     );
 
 SEQUENTIAL(
     myRedis.FlushDB(),
-    myRedis.SetUtf8('utf8', U'אבגדהוזחטיךכלםמןנסעףפץצקרשת'),
-    myRedis.GetUtf8('utf8'),
-    myRedis.locking.GetUtf8('utf8'),
+    myRedis.SetUtf8('utf8-4', U'אבגדהוזחטיךכלםמןנסעףפץצקרשת'),
+    myRedis.GetUtf8('utf8-4'),
+    myRedis.locking.GetUtf8('utf8-4'),
     myRedis.FlushDB()
     );
 
 SEQUENTIAL(
     myRedis.FlushDB(),
-    myRedis.locking.SetUtf8('utf8', U'אבגדהוזחטיךכלםמןנסעףפץצקרשת'),
-    myRedis.GetUtf8('utf8'),
-    myRedis.locking.GetUtf8('utf8'),
+    myRedis.locking.SetUtf8('utf8-5', U'אבגדהוזחטיךכלםמןנסעףפץצקרשת'),
+    myRedis.GetUtf8('utf8-5'),
+    myRedis.locking.GetUtf8('utf8-5'),
     myRedis.FlushDB()
     );
 
 SEQUENTIAL(
     myRedis.FlushDB(),
-    myRedis.setUtf8('utf8-2', U'אבגדהוזחטיךכלםמןנסעףפץצקרשת'),
-    getUtf8('utf8', 'utf8-2', myFuncUtf8),
+    myRedis.setUtf8('utf8-6', U'אבגדהוזחטיךכלםמןנסעףפץצקרשת'),
+    getUtf8('utf8', 'utf8-6', myFuncUtf8),
 );
 SEQUENTIAL(
     myRedis.FlushDB(),
-    myRedis.setUnicode('utf8-2', U'אבגדהוזחטיךכלםמןנסעףפץצקרשת'),
-    getUnicode('utf8', 'utf8-2', myFuncUni),
+    myRedis.setUnicode('utf8-7', U'אבגדהוזחטיךכלםמןנסעףפץצקרשת'),
+    getUnicode('utf8', 'utf8-7', myFuncUni),
 );
 
 SEQUENTIAL(
@@ -114,7 +111,7 @@ SEQUENTIAL(
     myRedis.FlushDB(),
     myRedis.locking.Getstring('testlock'),/*by default lock expires after 1s*/
     myRedis.exists('testlock'),
-    CSleep(2),
+    Std.System.Debug.Sleep(2000);
     myRedis.exists('testlock'),
 
     myRedis.setString('testlock', 'redis_ecl_lock_blah_blah_blah'),

+ 72 - 54
testing/regress/ecl/redissynctest.ecl

@@ -16,61 +16,83 @@
 ############################################################################## */
 
 IMPORT sync FROM lib_redis;
+IMPORT Std;
 
 STRING server := '--SERVER=127.0.0.1:6379';
 STRING password := 'foobared';
 sync.FlushDB(server, /*database*/, password);
 
-sync.SetBoolean('b', TRUE, server, /*database*/, /*expire*/, password);
-sync.GetBoolean('b', server, /*database*/, password);
+SEQUENTIAL(
+    sync.SetBoolean('b', TRUE, server, /*database*/, /*expire*/, password);
+    sync.GetBoolean('b', server, /*database*/, password);
+    );
 
 IMPORT redisServer FROM lib_redis;
 myRedis := redisServer(server, password);
 
 REAL pi := 3.14159265359;
-myRedis.SetReal('pi', pi);
-myRedis.GetReal('pi');
+SEQUENTIAL(
+    myRedis.SetReal('pi', pi);
+    myRedis.GetReal('pi');
+    myRedis.GetInteger('pi');
+    );
 
 REAL pi2 := pi*pi;
-myRedis.SetReal('pi', pi2, 1);
-myRedis.GetReal('pi', 1);
+SEQUENTIAL(
+    myRedis.SetReal('pi', pi2, 1);
+    myRedis.GetReal('pi', 1);
+    );
 
 INTEGER i := 123456789;
-myRedis.SetInteger('i', i);
-myRedis.GetInteger('i');
+SEQUENTIAL(
+    myRedis.SetInteger('i', i);
+    myRedis.GetInteger('i');
+    );
 
 myRedis2 := redisServer('--SERVER=127.0.0.1:6380', 'youarefoobared');
+SEQUENTIAL(
+    myRedis2.SetReal('pi', pi2, 1);
+    myRedis2.GetReal('pi', 1);
+    );
 
-myRedis2.SetReal('pi', pi2, 1);
-myRedis2.GetReal('pi', 1);
-
-myRedis2.SetInteger('i', i);
-myRedis2.GetInteger('i');
+SEQUENTIAL(
+    myRedis2.SetInteger('i', i);
+    myRedis2.GetInteger('i');
+    );
 
 UNSIGNED u := 7;
-myRedis.SetUnsigned('u', u);
-myRedis.GetUnsigned('u');
+SEQUENTIAL(
+    myRedis.SetUnsigned('u', u);
+    myRedis.GetUnsigned('u');
+    );
 
 STRING str  := 'supercalifragilisticexpialidocious';
-myRedis.SetString('str', str);
-myRedis.GetString('str');
+SEQUENTIAL(
+    myRedis.SetString('str', str);
+    myRedis.GetString('str');
+    myRedis.FlushDB();
+    myRedis.Exists('str');
+    );
 
 UNICODE uni := U'אבגדהוזחטיךכלםמןנסעףפץצקרשת';
-myRedis.setUnicode('uni', uni);
-myRedis.getUnicode('uni');
+SEQUENTIAL(
+    myRedis.setUnicode('uni', uni);
+    myRedis.getUnicode('uni');
+    );
 
 UTF8 utf := U'אבגדהוזחטיךכלםמןנסעףפץצקרשת';
-myRedis.SetUtf8('utf8', utf);
-myRedis.GetUtf8('utf8');
+SEQUENTIAL(
+    myRedis.SetUtf8('utf8', utf);
+    myRedis.GetUtf8('utf8');
+    myRedis.Exists('utf8');
+    myRedis.Del('utf8');
+    myRedis.Exists('uft8');
+    );
 
 DATA mydata := x'd790d791d792d793d794d795d796d798d799d79ad79bd79cd79dd79dd79ed79fd7a0d7a1d7a2d7a3d7a4d7a5d7a6d7a7d7a8d7a9d7aa';
-myRedis.SetData('data', mydata);
-myRedis.GetData('data');
-
 SEQUENTIAL(
-    myRedis.Exists('utf8'),
-    myRedis.Del('utf8'),
-    myRedis.Exists('uft8')
+    myRedis.SetData('data', mydata);
+    myRedis.GetData('data');
     );
 
 SEQUENTIAL(
@@ -78,30 +100,26 @@ SEQUENTIAL(
     myRedis.GetInteger('str2int');
     );
 
-CSleep(INTEGER duration) := BEGINC++
-    sleep(duration);
-ENDC++;
+sleep(INTEGER duration) := Std.System.Debug.Sleep(duration * 1000);
 
 SEQUENTIAL(
-    myRedis.Exists('str'),
-    myRedis.Expire('str', , 1000000),/*\mu-s*/
-    CSleep(2),
-    myRedis.Exists('str'),
-
-    myRedis.SetString('str', str),
-    myRedis.Exists('str'),
-    myRedis.Expire('str', , 1000000),/*\mu-s*/
-    myRedis.Persist('str'),
-    CSleep(2),
-    myRedis.Exists('str')
+    myRedis.Exists('str2'),
+    myRedis.Expire('str2', , 1000),/*\ms*/
+    sleep(2),
+    myRedis.Exists('str2'),
+
+    myRedis.SetString('str3', str),
+    myRedis.Exists('str3'),
+    myRedis.Expire('str3', , 1000),/*\ms*/
+    myRedis.Persist('str3'),
+    sleep(2),
+    myRedis.Exists('str3')
     );
 
-myRedis.GetInteger('pi');
-
 SEQUENTIAL(
-    myRedis.SetString('Einnie', 'Woof', 0, 1000000),
+    myRedis.SetString('Einnie', 'Woof', 0, 1000),
     myRedis.Exists('Einnie');
-    CSleep(2);
+    sleep(2);
     myRedis.Exists('Einnie');
 
     myRedis.SetString('Einnie', 'Woof', 0),
@@ -116,20 +134,20 @@ myRedis.DBSize();
 myRedis.DBSize(1);
 myRedis.DBSize(2);
 
-SEQUENTIAL(
-    myRedis.FlushDB(),
-    myRedis.Exists('str')
-    );
-
 //The follwoing tests the multithreaded caching of the redis connections
 //SUM(NOFOLD(s1 + s2), a) uses two threads
 INTEGER x := 2;
 INTEGER N := 100;
 myRedis.FlushDB();
-myRedis.SetInteger('i', x);
-s1 := DATASET(N, TRANSFORM({ integer a }, SELF.a := myRedis.GetInteger('i')));
-s2 := DATASET(N, TRANSFORM({ integer a }, SELF.a := myRedis.GetInteger('i')/2));
-SUM(NOFOLD(s1 + s2), a);//answer = (x+x/2)*N, in this case 3N.
+s1 := DATASET(N, TRANSFORM({ integer a }, SELF.a := myRedis.GetInteger('transformTest' +  'x'[1..NOFOLD(0)*COUNTER]   )));
+s2 := DATASET(N, TRANSFORM({ integer a }, SELF.a := myRedis.GetInteger('transformTest' +  'x'[1..NOFOLD(0)*COUNTER]   )/2));
+//'x'[1..NOFOLD(0)*COUNTER] prevents the compiler from obeying the 'once' keyword associated with the GetString service definition and
+//therefore calls GetString('transformTest') 2N times as could be intended.  Without this, it is only called once/thread (in this case twice).
+//In either case the resultant aggregrate below will return 1.5xN (1.5*2*100 = 300).
+SEQUENTIAL(
+    myRedis.SetInteger('transformTest', x),
+    OUTPUT(SUM(NOFOLD(s1 + s2), a))//answer = (x+x/2)*N, in this case 300.
+);
 
 myRedis.FlushDB();
 myRedis2.FlushDB();