~chrisvaughn/gearmand/devel

« back to all changes in this revision

Viewing changes to tests/postgres_test.cc

  • Committer: root
  • Date: 2012-02-05 05:40:05 UTC
  • Revision ID: root@cvaughn.yv.local-20120205054005-m8o3vuynx6gekebx
fixes postgres bug and adds testing

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Gearman server and library
 
2
 * Copyright (C) 2008 Brian Aker, Eric Day
 
3
 * All rights reserved.
 
4
 *
 
5
 * Use and distribution licensed under the BSD license.  See
 
6
 * the COPYING file in the parent directory for full text.
 
7
 */
 
8
 
 
9
#include <config.h>
 
10
#include <libtest/test.hpp>
 
11
 
 
12
using namespace libtest;
 
13
 
 
14
#include <cassert>
 
15
#include <cstdio>
 
16
#include <cstdlib>
 
17
#include <cstring>
 
18
#include <unistd.h>
 
19
 
 
20
#include <libgearman/gearman.h>
 
21
 
 
22
#include <tests/basic.h>
 
23
#include <tests/context.h>
 
24
 
 
25
#include <tests/ports.h>
 
26
 
 
27
#ifndef __INTEL_COMPILER
 
28
#pragma GCC diagnostic ignored "-Wold-style-cast"
 
29
#endif
 
30
 
 
31
static test_return_t gearmand_basic_option_test(void *)
 
32
{
 
33
  const char *args[]= { "--check-args",
 
34
    "--queue-type=Postgres",
 
35
    "--libpq-conninfo=\"host=localhost port=5432 user=root dbname=gearman\"",
 
36
    "--libpq-table=gearman",
 
37
    0 };
 
38
 
 
39
  test_compare(EXIT_SUCCESS, exec_cmdline(gearmand_binary(), args, true));
 
40
 
 
41
  return TEST_SUCCESS;
 
42
}
 
43
 
 
44
static test_return_t collection_init(void *object)
 
45
{
 
46
  const char *argv[]= { "test_gearmand",
 
47
    "--queue-type=Postgres",
 
48
    "--libpq-conninfo=\"host=localhost port=5432 user=root dbname=gearman\"",
 
49
    "--libpq-table=gearman",
 
50
    0 };
 
51
 
 
52
  Context *test= (Context *)object;
 
53
  assert(test);
 
54
 
 
55
  test_truth(test->initialize(4, argv));
 
56
 
 
57
  return TEST_SUCCESS;
 
58
}
 
59
 
 
60
static test_return_t collection_cleanup(void *object)
 
61
{
 
62
  Context *test= (Context *)object;
 
63
  test->reset();
 
64
 
 
65
  return TEST_SUCCESS;
 
66
}
 
67
 
 
68
 
 
69
static void *world_create(server_startup_st& servers, test_return_t& error)
 
70
{
 
71
  if (has_postgres_support() == false)
 
72
  {
 
73
    error= TEST_SKIPPED;
 
74
    return NULL;
 
75
  }
 
76
 
 
77
  Context *test= new Context(POSTGRES_TEST_PORT, servers);
 
78
  if (not test)
 
79
  {
 
80
    error= TEST_MEMORY_ALLOCATION_FAILURE;
 
81
    return NULL;
 
82
  }
 
83
 
 
84
  return test;
 
85
}
 
86
 
 
87
static bool world_destroy(void *object)
 
88
{
 
89
  Context *test= (Context *)object;
 
90
 
 
91
  delete test;
 
92
 
 
93
  return TEST_SUCCESS;
 
94
}
 
95
 
 
96
test_st gearmand_basic_option_tests[] ={
 
97
  {"all options", 0, gearmand_basic_option_test },
 
98
  {0, 0, 0}
 
99
};
 
100
 
 
101
test_st tests[] ={
 
102
  {"gearman_client_echo()", 0, client_echo_test },
 
103
  {"gearman_client_echo() fail", 0, client_echo_fail_test },
 
104
  {"gearman_worker_echo()", 0, worker_echo_test },
 
105
  {"clean", 0, queue_clean },
 
106
  {"add", 0, queue_add },
 
107
  {"worker", 0, queue_worker },
 
108
  {0, 0, 0}
 
109
};
 
110
 
 
111
collection_st collection[] ={
 
112
  {"gearmand options", 0, 0, gearmand_basic_option_tests},
 
113
  {"postgres queue", collection_init, collection_cleanup, tests},
 
114
  {0, 0, 0, 0}
 
115
};
 
116
 
 
117
void get_world(Framework *world)
 
118
{
 
119
  world->collections= collection;
 
120
  world->_create= world_create;
 
121
  world->_destroy= world_destroy;
 
122
}