]> git.proxmox.com Git - mirror_corosync.git/blame - test/stress_cpgfdget.c
test: Fix cpgtest
[mirror_corosync.git] / test / stress_cpgfdget.c
CommitLineData
cdea2299
SD
1/*
2 * Copyright (c) 2009 Red Hat, Inc.
3 *
4 * All rights reserved.
5 *
6 * Author: Steven Dake (sdake@redhat.com)
7 *
8 * This software licensed under BSD license, the text of which follows:
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions are met:
12 *
13 * - Redistributions of source code must retain the above copyright notice,
14 * this list of conditions and the following disclaimer.
15 * - Redistributions in binary form must reproduce the above copyright notice,
16 * this list of conditions and the following disclaimer in the documentation
17 * and/or other materials provided with the distribution.
18 * - Neither the name of the MontaVista Software, Inc. nor the names of its
19 * contributors may be used to endorse or promote products derived from this
20 * software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32 * THE POSSIBILITY OF SUCH DAMAGE.
33 */
34
35#include <config.h>
36
37#include <stdio.h>
38#include <stdlib.h>
39#include <sys/socket.h>
40#include <netinet/in.h>
41#include <arpa/inet.h>
42#include <errno.h>
43#include <string.h>
44#include <corosync/corotypes.h>
45#include <corosync/cpg.h>
46#include <signal.h>
cdea2299
SD
47
48struct my_msg {
49 unsigned int msg_size;
50 unsigned char sha1[20];
51 unsigned char buffer[0];
52};
53
cdea2299
SD
54static void cpg_deliver_fn (
55 cpg_handle_t handle,
56 const struct cpg_name *group_name,
57 uint32_t nodeid,
58 uint32_t pid,
59 void *m,
60 size_t msg_len)
61{
62}
63
64static void cpg_confchg_fn (
65 cpg_handle_t handle,
66 const struct cpg_name *group_name,
67 const struct cpg_address *member_list, size_t member_list_entries,
68 const struct cpg_address *left_list, size_t left_list_entries,
69 const struct cpg_address *joined_list, size_t joined_list_entries)
70{
71}
72
73static cpg_callbacks_t callbacks = {
74 cpg_deliver_fn,
75 cpg_confchg_fn
76};
77
78static void sigintr_handler (int num)
79{
80 exit (1);
81}
82
83
84#define ITERATIONS (1000*2000)
85
86int main (void)
87{
88 cpg_handle_t handle;
89 cs_error_t res;
90 int original_fd;
91 int i;
92 int fd;
93
94 signal (SIGINT, sigintr_handler);
95 res = cpg_initialize (&handle, &callbacks);
96 if (res != CS_OK) {
97 printf ("FAIL %d\n", res);
98 exit (-1);
99 }
100
101 res = cpg_fd_get (handle, &original_fd);
102 if (res != CS_OK) {
103 printf ("FAIL %d\n", res);
104 }
105 for (i = 0; i < ITERATIONS; i++) {
106 res = cpg_fd_get (handle, &fd);
107 if (original_fd != fd) {
108 printf ("FAIL\n");
109 exit (-1);
110 }
111 }
112
113 cpg_finalize (handle);
114
115 printf ("PASS\n");
116 return (0);
117}