929.1.259
by Brian Aker
Improve tesing of command line apps |
1 |
/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
|
2 |
*
|
|
3 |
* Test memdump
|
|
4 |
*
|
|
5 |
* Copyright (C) 2011 Data Differential, http://datadifferential.com/
|
|
6 |
*
|
|
7 |
* Redistribution and use in source and binary forms, with or without
|
|
8 |
* modification, are permitted provided that the following conditions are
|
|
9 |
* met:
|
|
10 |
*
|
|
11 |
* * Redistributions of source code must retain the above copyright
|
|
12 |
* notice, this list of conditions and the following disclaimer.
|
|
13 |
*
|
|
14 |
* * Redistributions in binary form must reproduce the above
|
|
15 |
* copyright notice, this list of conditions and the following disclaimer
|
|
16 |
* in the documentation and/or other materials provided with the
|
|
17 |
* distribution.
|
|
18 |
*
|
|
19 |
* * The names of its contributors may not be used to endorse or
|
|
20 |
* promote products derived from this software without specific prior
|
|
21 |
* written permission.
|
|
22 |
*
|
|
23 |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
24 |
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
25 |
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
26 |
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
27 |
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
28 |
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
29 |
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
30 |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
31 |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
32 |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
33 |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
34 |
*
|
|
35 |
*/
|
|
36 |
||
37 |
||
38 |
/*
|
|
39 |
Test that we are cycling the servers we are creating during testing.
|
|
40 |
*/
|
|
41 |
||
1088.1.2
by Brian Aker
Update all config.h usage. |
42 |
#include <mem_config.h> |
929.1.259
by Brian Aker
Improve tesing of command line apps |
43 |
|
44 |
#include <libtest/test.hpp> |
|
1072.1.20
by Brian Aker
Fix all include location, and drop versions of the library that were never shipped. |
45 |
#include <libmemcached-1.0/memcached.h> |
929.1.259
by Brian Aker
Improve tesing of command line apps |
46 |
|
47 |
using namespace libtest; |
|
48 |
||
49 |
#ifndef __INTEL_COMPILER
|
|
50 |
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
|
51 |
#endif
|
|
52 |
||
929.2.137
by Brian Aker
Update for logic for server_create. |
53 |
static std::string executable("./clients/memdump"); |
929.1.259
by Brian Aker
Improve tesing of command line apps |
54 |
|
55 |
static test_return_t help_test(void *) |
|
56 |
{
|
|
57 |
const char *args[]= { "--help", "--quiet", 0 }; |
|
58 |
||
929.2.116
by Brian Aker
Update libtest/associated tests. |
59 |
test_compare(EXIT_SUCCESS, exec_cmdline(executable, args, true)); |
60 |
||
929.1.259
by Brian Aker
Improve tesing of command line apps |
61 |
return TEST_SUCCESS; |
62 |
}
|
|
63 |
||
64 |
static test_return_t server_test(void *) |
|
65 |
{
|
|
66 |
char buffer[1024]; |
|
67 |
snprintf(buffer, sizeof(buffer), "--servers=localhost:%d", int(default_port())); |
|
68 |
const char *args[]= { buffer, 0 }; |
|
69 |
||
1086.1.11
by Brian Aker
Update support for fixing spec. |
70 |
test_true(exec_cmdline(executable, args, true) <= EXIT_FAILURE); |
929.2.116
by Brian Aker
Update libtest/associated tests. |
71 |
|
929.1.259
by Brian Aker
Improve tesing of command line apps |
72 |
return TEST_SUCCESS; |
73 |
}
|
|
74 |
||
75 |
static test_return_t FOUND_test(void *) |
|
76 |
{
|
|
77 |
char buffer[1024]; |
|
1164.1.3
by Brian Aker
Fix tests (namely the "s" for CLI options). |
78 |
int length= snprintf(buffer, sizeof(buffer), "--server=localhost:%d", int(default_port())); |
929.2.116
by Brian Aker
Update libtest/associated tests. |
79 |
const char *args[]= { buffer, 0 }; |
929.1.259
by Brian Aker
Improve tesing of command line apps |
80 |
|
1164.1.3
by Brian Aker
Fix tests (namely the "s" for CLI options). |
81 |
memcached_st *memc= memcached(buffer, length); |
929.1.259
by Brian Aker
Improve tesing of command line apps |
82 |
test_true(memc); |
83 |
||
84 |
test_compare(MEMCACHED_SUCCESS, |
|
85 |
memcached_set(memc, test_literal_param("foo"), 0, 0, 0, 0)); |
|
86 |
||
87 |
test_compare(MEMCACHED_SUCCESS, |
|
88 |
memcached_set(memc, test_literal_param("foo2"), 0, 0, 0, 0)); |
|
89 |
||
90 |
memcached_return_t rc; |
|
91 |
test_null(memcached_get(memc, test_literal_param("foo"), 0, 0, &rc)); |
|
92 |
test_compare(MEMCACHED_SUCCESS, rc); |
|
93 |
||
1164.1.3
by Brian Aker
Fix tests (namely the "s" for CLI options). |
94 |
length= snprintf(buffer, sizeof(buffer), "--servers=localhost:%d", int(default_port())); |
1086.1.11
by Brian Aker
Update support for fixing spec. |
95 |
test_true(exec_cmdline(executable, args, true) <= EXIT_FAILURE); |
929.1.259
by Brian Aker
Improve tesing of command line apps |
96 |
|
97 |
memcached_free(memc); |
|
98 |
||
99 |
return TEST_SUCCESS; |
|
100 |
}
|
|
101 |
||
102 |
test_st memdump_tests[] ={ |
|
103 |
{"--help", true, help_test }, |
|
104 |
{"--server", true, server_test }, |
|
105 |
{"FOUND", true, FOUND_test }, |
|
106 |
{0, 0, 0} |
|
107 |
};
|
|
108 |
||
109 |
collection_st collection[] ={ |
|
110 |
{"memdump", 0, 0, memdump_tests }, |
|
111 |
{0, 0, 0, 0} |
|
112 |
};
|
|
113 |
||
1169.1.2
by Brian Aker
Cleanup memdump's world_create |
114 |
static void *world_create(server_startup_st& servers, test_return_t&) |
929.1.259
by Brian Aker
Improve tesing of command line apps |
115 |
{
|
1169.1.2
by Brian Aker
Cleanup memdump's world_create |
116 |
SKIP_UNLESS(libtest::has_memcached()); |
929.1.259
by Brian Aker
Improve tesing of command line apps |
117 |
|
1169.1.2
by Brian Aker
Cleanup memdump's world_create |
118 |
ASSERT_TRUE(server_startup(servers, "memcached", libtest::default_port(), NULL)); |
929.1.259
by Brian Aker
Improve tesing of command line apps |
119 |
|
120 |
return &servers; |
|
121 |
}
|
|
122 |
||
123 |
||
1057.1.5
by Brian Aker
Update to support new warnings. |
124 |
void get_world(libtest::Framework* world) |
929.1.259
by Brian Aker
Improve tesing of command line apps |
125 |
{
|
1008.1.1
by Brian Aker
Catch up with Gearman's libtest |
126 |
world->collections(collection); |
127 |
world->create(world_create); |
|
929.1.259
by Brian Aker
Improve tesing of command line apps |
128 |
}
|
129 |