1 /* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3 * Libmemcached Client and Server
5 * Copyright (C) 2011 Data Differential, http://datadifferential.com/
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions are
12 * * Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
15 * * Redistributions in binary form must reproduce the above
16 * copyright notice, this list of conditions and the following disclaimer
17 * in the documentation and/or other materials provided with the
20 * * The names of its contributors may not be used to endorse or
21 * promote products derived from this software without specific prior
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
28 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
30 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 #include <libtest/test.hpp>
41 using namespace libtest
;
43 #include <libmemcached-1.0/memcached.h>
44 #include <libmemcachedutil-1.0/util.h>
46 #include "tests/touch.h"
48 static test_return_t
pre_touch(memcached_st
*memc
)
50 test_compare(MEMCACHED_SUCCESS
, memcached_version(memc
));
51 test_skip(true, libmemcached_util_version_check(memc
, 1, 4, 8));
56 test_return_t
test_memcached_touch(memcached_st
*memc
)
59 test_skip(TEST_SUCCESS
, pre_touch(memc
));
65 test_null(memcached_get(memc
,
66 test_literal_param("touchkey"),
69 test_compare(MEMCACHED_NOTFOUND
, rc
);
71 test_compare(MEMCACHED_SUCCESS
,
73 test_literal_param("touchkey"),
74 test_literal_param("touchval"),
78 char *value
= memcached_get(memc
,
79 test_literal_param("touchkey"),
81 test_compare(8U, test_literal_param_size("touchval"));
83 test_strcmp(value
, "touchval");
84 test_compare(MEMCACHED_SUCCESS
, rc
);
88 test_compare(MEMCACHED_SUCCESS
,
89 memcached_touch(memc
, test_literal_param("touchkey"), 60 *60));
91 test_skip(false ,memcached_behavior_get(memc
, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL
));
93 rc
= memcached_touch(memc
, test_literal_param("touchkey"), 60 *60 *24 *60);
94 test_compare_hint(MEMCACHED_SUCCESS
, rc
, memcached_last_error_message(memc
));
96 test_compare(MEMCACHED_NOTFOUND
,
97 memcached_exist(memc
, test_literal_param("touchkey")));
102 test_return_t
test_memcached_touch_by_key(memcached_st
*memc
)
105 test_skip(TEST_SUCCESS
, pre_touch(memc
));
111 test_null(memcached_get_by_key(memc
,
112 test_literal_param("grouping_key"),
113 test_literal_param("touchkey"),
116 test_compare(MEMCACHED_NOTFOUND
, rc
);
118 test_compare(MEMCACHED_SUCCESS
,
119 memcached_set_by_key(memc
,
120 test_literal_param("grouping_key"),
121 test_literal_param("touchkey"),
122 test_literal_param("touchval"),
126 char *value
= memcached_get_by_key(memc
,
127 test_literal_param("grouping_key"),
128 test_literal_param("touchkey"),
130 test_compare(8U, test_literal_param_size("touchval"));
132 test_strcmp(value
, "touchval");
133 test_compare(MEMCACHED_SUCCESS
, rc
);
137 test_compare(MEMCACHED_SUCCESS
,
138 memcached_touch_by_key(memc
,
139 test_literal_param("grouping_key"),
140 test_literal_param("touchkey"),
143 test_skip(false ,memcached_behavior_get(memc
, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL
));
144 test_compare(MEMCACHED_SUCCESS
,
145 memcached_touch_by_key(memc
,
146 test_literal_param("grouping_key"),
147 test_literal_param("touchkey"),
149 test_compare(MEMCACHED_NOTFOUND
,
150 memcached_exist_by_key(memc
, test_literal_param("grouping_key"),test_literal_param("touchkey")));