- execute(ascii_set_item("test_ascii_mget1", "value"));
- execute(ascii_set_item("test_ascii_mget2", "value"));
- execute(ascii_set_item("test_ascii_mget3", "value"));
- execute(ascii_set_item("test_ascii_mget4", "value"));
- execute(ascii_set_item("test_ascii_mget5", "value"));
-
- execute(send_string("get test_ascii_mget1 test_ascii_mget2 test_ascii_mget3 "
- "test_ascii_mget4 test_ascii_mget5 "
- "test_ascii_mget6\r\n"));
- execute(ascii_get_value("test_ascii_mget1", "value"));
- execute(ascii_get_value("test_ascii_mget2", "value"));
- execute(ascii_get_value("test_ascii_mget3", "value"));
- execute(ascii_get_value("test_ascii_mget4", "value"));
- execute(ascii_get_value("test_ascii_mget5", "value"));
-
- char buffer[5];
- execute(retry_read(buffer, 5));
- verify(memcmp(buffer, "END\r\n", 5) == 0);
- return TEST_PASS;
+ const int nkeys= 5;
+ const char * const keys[]= {
+ "test_ascii_mget1",
+ "test_ascii_mget2",
+ /* test_ascii_mget_3 does not exist :) */
+ "test_ascii_mget4",
+ "test_ascii_mget5",
+ "test_ascii_mget6"
+ };
+
+ for (int x= 0; x < nkeys; ++x)
+ execute(ascii_set_item(keys[x], "value"));
+
+ /* Ask for a key that doesn't exist as well */
+ execute(send_string("get test_ascii_mget1 test_ascii_mget2 test_ascii_mget3 "
+ "test_ascii_mget4 test_ascii_mget5 "
+ "test_ascii_mget6\r\n"));
+
+ char* returned[nkeys];
+
+ for (int x= 0; x < nkeys; ++x)
+ {
+ ssize_t nbytes = 0;
+ char *v= NULL;
+ execute(ascii_get_unknown_value(&returned[x], &v, &nbytes));
+ verify(nbytes == 5);
+ verify(memcmp(v, "value", 5) == 0);
+ free(v);
+ }
+ char buffer[5];
+ execute(retry_read(buffer, 5));
+ verify(memcmp(buffer, "END\r\n", 5) == 0);
+
+ /* verify that we got all the keys we expected */
+ for (int x= 0; x < nkeys; ++x)
+ {
+ bool found= false;
+ for (int y= 0; y < nkeys; ++y) {
+ if (strcmp(keys[x], returned[y]) == 0)
+ {
+ found = true;
+ break;
+ }
+ }
+ verify(found);
+ }
+
+ for (int x= 0; x < nkeys; ++x)
+ free(returned[x]);
+
+ return TEST_PASS;