~brianaker/libmemcached/gear-clean

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