trema 0.2.2.1 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitmodules +3 -0
- data/.travis.yml +13 -0
- data/.yardopts +4 -0
- data/Gemfile +2 -3
- data/README.md +43 -97
- data/Rakefile +60 -4
- data/Rantfile +11 -10
- data/cruise.rb +4 -6
- data/features/example.packetin_filter_config.feature +10 -10
- data/features/example.switch_monitor.feature +14 -2
- data/features/step_definitions/kill_steps.rb +2 -2
- data/features/step_definitions/{off_steps.rb → killall_steps.rb} +2 -2
- data/features/step_definitions/misc_steps.rb +1 -1
- data/features/step_definitions/up_steps.rb +30 -0
- data/features/trema.feature +1 -0
- data/features/trema.run.feature +1 -0
- data/locale/README.ja.md +19 -0
- data/locale/ja/yard.po +3762 -0
- data/locale/yard.pot +3740 -0
- data/ruby/extconf.rb +4 -1
- data/ruby/trema/action-common.c +3 -17
- data/ruby/trema/action-common.h +3 -7
- data/ruby/trema/action.rb +33 -0
- data/ruby/trema/app.rb +1 -1
- data/ruby/trema/barrier-request.c +1 -0
- data/ruby/trema/command/run.rb +13 -9
- data/ruby/trema/command/usage.rb +1 -0
- data/ruby/trema/command/version.rb +1 -1
- data/ruby/trema/controller.c +133 -50
- data/ruby/trema/controller.rb +2 -2
- data/ruby/trema/desc-stats-reply.rb +77 -0
- data/ruby/trema/dsl/configuration.rb +3 -14
- data/ruby/trema/dsl/rswitch.rb +47 -0
- data/ruby/trema/dsl/runner.rb +4 -1
- data/ruby/trema/dsl/syntax.rb +11 -8
- data/ruby/trema/echo-reply.c +59 -45
- data/ruby/trema/echo-reply.h +1 -3
- data/ruby/trema/echo-request.c +49 -71
- data/ruby/trema/echo-request.h +0 -2
- data/ruby/trema/echo.c +99 -0
- data/ruby/trema/{action-enqueue.h → echo.h} +6 -7
- data/ruby/trema/enqueue.rb +87 -0
- data/ruby/trema/error.c +109 -104
- data/ruby/trema/error.h +0 -2
- data/ruby/trema/features-reply.c +89 -35
- data/ruby/trema/features-reply.h +0 -6
- data/ruby/trema/features-request.c +63 -37
- data/ruby/trema/features-request.h +0 -2
- data/ruby/trema/flow-mod.c +149 -0
- data/ruby/trema/{action-output.h → flow-mod.h} +6 -6
- data/ruby/trema/get-config-request.c +1 -0
- data/ruby/trema/hardware-switch.rb +88 -0
- data/ruby/trema/hello.c +55 -31
- data/ruby/trema/hello.h +0 -2
- data/ruby/trema/ip.rb +12 -2
- data/ruby/trema/logger.rb +29 -0
- data/ruby/trema/mac.rb +57 -36
- data/ruby/trema/match.c +7 -9
- data/ruby/trema/monkey-patch/integer/ranges.rb +0 -2
- data/ruby/trema/network-component.rb +1 -1
- data/ruby/trema/open-vswitch.rb +2 -2
- data/ruby/trema/openflow-switch.rb +3 -54
- data/ruby/trema/{packet_in.c → packet-in.c} +262 -175
- data/ruby/trema/{packet_in.h → packet-in.h} +0 -2
- data/ruby/trema/packet-queue.rb +4 -3
- data/ruby/trema/port-mod.c +8 -9
- data/ruby/trema/port-status-add.rb +60 -0
- data/ruby/trema/port-status-delete.rb +60 -0
- data/ruby/trema/port-status-modify.rb +60 -0
- data/ruby/trema/port-status.c +48 -15
- data/ruby/trema/port-status.h +6 -8
- data/ruby/trema/port.c +63 -8
- data/ruby/trema/queue-get-config-request.c +1 -0
- data/ruby/trema/ruby-switch.rb +62 -0
- data/ruby/trema/send-out-port.rb +97 -0
- data/ruby/trema/set-config.c +1 -0
- data/ruby/trema/set-eth-addr.rb +45 -0
- data/ruby/trema/set-eth-dst-addr.rb +54 -0
- data/ruby/trema/set-eth-src-addr.rb +54 -0
- data/ruby/trema/set-ip-addr.rb +47 -0
- data/ruby/trema/set-ip-dst-addr.rb +53 -0
- data/ruby/trema/set-ip-src-addr.rb +52 -0
- data/ruby/trema/set-ip-tos.rb +63 -0
- data/ruby/trema/set-transport-dst-port.rb +53 -0
- data/ruby/trema/set-transport-port.rb +52 -0
- data/ruby/trema/set-transport-src-port.rb +54 -0
- data/ruby/trema/set-vlan-priority.rb +65 -0
- data/ruby/trema/set-vlan-vid.rb +64 -0
- data/ruby/trema/shell/down.rb +1 -1
- data/ruby/trema/shell/link.rb +4 -4
- data/ruby/trema/shell/run.rb +8 -6
- data/ruby/trema/shell/up.rb +3 -3
- data/ruby/trema/stats-reply.c +27 -2
- data/ruby/trema/stats-request.c +64 -23
- data/ruby/trema/strip-vlan-header.rb +41 -0
- data/ruby/trema/switch.c +196 -0
- data/ruby/trema/{action-vendor.h → switch.h} +5 -7
- data/ruby/trema/switch.rb +28 -9
- data/ruby/trema/trema-ruby-utils.c +66 -0
- data/ruby/trema/{action-set-dl-src.h → trema-ruby-utils.h} +9 -11
- data/ruby/trema/trema.c +61 -61
- data/ruby/trema/vendor-action.rb +73 -0
- data/ruby/trema/vendor.c +121 -52
- data/ruby/trema/vendor.h +6 -10
- data/ruby/trema/version.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/support/action.rb +52 -0
- data/spec/support/mandatory-option.rb +56 -0
- data/spec/support/openflow-message.rb +91 -7
- data/spec/support/port-status.rb +38 -0
- data/spec/trema/controller_spec.rb +0 -26
- data/spec/trema/dsl/configuration_spec.rb +3 -3
- data/spec/trema/dsl/runner_spec.rb +12 -32
- data/spec/trema/dsl/syntax_spec.rb +2 -11
- data/spec/trema/echo-reply_spec.rb +49 -14
- data/spec/trema/echo-request_spec.rb +86 -34
- data/spec/trema/enqueue_spec.rb +76 -0
- data/spec/trema/error_spec.rb +43 -58
- data/spec/trema/features-reply_spec.rb +58 -24
- data/spec/trema/features-request_spec.rb +54 -28
- data/spec/trema/flow-mod_spec.rb +99 -0
- data/spec/trema/{openflow-switch_spec.rb → hardware-switch_spec.rb} +3 -3
- data/spec/trema/hello_spec.rb +28 -14
- data/spec/trema/ip_spec.rb +54 -0
- data/spec/trema/mac_spec.rb +49 -64
- data/spec/trema/match_spec.rb +1 -1
- data/spec/trema/open-vswitch_spec.rb +7 -7
- data/spec/trema/packet-in_spec.rb +73 -16
- data/spec/trema/port-status-add_spec.rb +32 -0
- data/spec/trema/port-status-delete_spec.rb +32 -0
- data/spec/trema/port-status-modify_spec.rb +71 -0
- data/spec/trema/port-status_spec.rb +5 -76
- data/spec/trema/{action-output_spec.rb → send-out-port_spec.rb} +20 -47
- data/spec/trema/set-eth-dst-addr_spec.rb +75 -0
- data/spec/trema/set-eth-src-addr_spec.rb +72 -0
- data/spec/trema/set-ip-dst-addr_spec.rb +58 -0
- data/spec/trema/set-ip-src-addr_spec.rb +58 -0
- data/spec/trema/set-ip-tos_spec.rb +65 -0
- data/spec/trema/set-transport-dst-port_spec.rb +65 -0
- data/spec/trema/set-transport-src-port_spec.rb +65 -0
- data/spec/trema/set-vlan-priority_spec.rb +65 -0
- data/spec/trema/set-vlan-vid_spec.rb +65 -0
- data/spec/trema/shell/vhost_spec.rb +4 -1
- data/spec/trema/shell/vswitch_spec.rb +11 -11
- data/spec/trema/stats-reply_spec.rb +59 -13
- data/spec/trema/stats-request_spec.rb +6 -0
- data/spec/trema/{action-strip-vlan_spec.rb → strip-vlan-header_spec.rb} +3 -17
- data/spec/trema/switch-daemon_spec.rb +39 -0
- data/spec/trema/vendor-action_spec.rb +81 -0
- data/spec/trema/vendor_spec.rb +76 -0
- data/spec/trema_spec.rb +56 -0
- data/src/examples/dumper/dumper.c +0 -8
- data/src/examples/dumper/dumper.rb +52 -52
- data/src/examples/hello_trema/hello_trema.c +0 -2
- data/src/examples/learning_switch/learning-switch.rb +3 -3
- data/src/examples/multi_learning_switch/multi-learning-switch.rb +3 -3
- data/src/examples/openflow_message/features-request.rb +3 -3
- data/src/examples/packetin_filter_config/utils.c +4 -4
- data/src/examples/repeater_hub/repeater-hub.rb +3 -3
- data/src/examples/switch_info/switch_info.rb +2 -2
- data/src/examples/switch_monitor/switch_monitor.c +1 -1
- data/src/examples/traffic_monitor/traffic-monitor.rb +3 -3
- data/src/lib/arp.h +4 -1
- data/src/lib/chibach.c +391 -0
- data/src/lib/chibach.h +71 -0
- data/src/lib/chibach_private.c +170 -0
- data/src/lib/chibach_private.h +52 -0
- data/src/lib/ether.c +2 -1
- data/src/lib/ether.h +0 -1
- data/src/lib/ipv4.h +13 -14
- data/{ruby/trema/action-set-nw-src.h → src/lib/ipv6.h} +13 -9
- data/src/lib/log.c +161 -58
- data/src/lib/log.h +11 -16
- data/src/lib/messenger.c +36 -1
- data/src/lib/messenger.h +1 -0
- data/src/lib/openflow_application_interface.c +128 -28
- data/src/lib/openflow_application_interface.h +31 -6
- data/src/lib/openflow_message.c +2 -1
- data/src/lib/openflow_service_interface.h +1 -0
- data/src/lib/openflow_switch_interface.c +1380 -0
- data/src/lib/openflow_switch_interface.h +264 -0
- data/src/lib/packet_info.c +94 -11
- data/src/lib/packet_info.h +22 -3
- data/src/lib/packet_parser.c +38 -2
- data/src/lib/secure_channel.c +498 -0
- data/{ruby/trema/vendor-request.h → src/lib/secure_channel.h} +11 -10
- data/src/lib/tcp.h +0 -3
- data/src/lib/trema.c +38 -5
- data/{ruby/trema/action-set-nw-dst.h → src/lib/trema.hpp} +17 -8
- data/src/lib/trema_wrapper.c +5 -0
- data/src/lib/trema_wrapper.h +4 -0
- data/src/lib/utility.c +93 -4
- data/src/lib/utility.h +1 -0
- data/src/lib/wrapper.c +30 -7
- data/src/lib/wrapper.h +2 -0
- data/src/switch_manager/ofpmsg_recv.c +44 -30
- data/src/switch_manager/ofpmsg_send.c +40 -1
- data/src/switch_manager/ofpmsg_send.h +2 -0
- data/src/switch_manager/switch.c +153 -8
- data/src/switch_manager/switch.h +1 -0
- data/src/switch_manager/switchinfo.h +5 -0
- data/src/tremashark/README +2 -2
- data/src/tremashark/plugin/packet-trema/packet-trema.c +1 -0
- data/trema +1 -1
- data/unittests/lib/log_test.c +158 -34
- data/unittests/lib/openflow_application_interface_test.c +252 -69
- data/unittests/lib/openflow_message_test.c +3 -1
- data/unittests/lib/packet_parser_test.c +60 -15
- data/unittests/lib/test_packets/icmp6_echo_rep.cap +0 -0
- data/unittests/lib/test_packets/icmp6_echo_req.cap +0 -0
- data/unittests/lib/trema_test.c +2 -0
- data/unittests/lib/utility_test.c +65 -2
- data/unittests/lib/wrapper_test.c +29 -0
- data/vendor/{README → README.md} +2 -12
- data/vendor/packet-openflow.diff +13 -0
- metadata +86 -53
- data/GPL2 +0 -339
- data/ruby/trema/action-enqueue.c +0 -161
- data/ruby/trema/action-output.c +0 -169
- data/ruby/trema/action-set-dl-dst.c +0 -131
- data/ruby/trema/action-set-dl-dst.h +0 -44
- data/ruby/trema/action-set-dl-src.c +0 -131
- data/ruby/trema/action-set-nw-dst.c +0 -135
- data/ruby/trema/action-set-nw-src.c +0 -140
- data/ruby/trema/action-set-nw-tos.c +0 -124
- data/ruby/trema/action-set-nw-tos.h +0 -42
- data/ruby/trema/action-set-tp-dst.c +0 -122
- data/ruby/trema/action-set-tp-dst.h +0 -42
- data/ruby/trema/action-set-tp-src.c +0 -124
- data/ruby/trema/action-set-tp-src.h +0 -42
- data/ruby/trema/action-set-vlan-pcp.c +0 -128
- data/ruby/trema/action-set-vlan-pcp.h +0 -42
- data/ruby/trema/action-set-vlan-vid.c +0 -125
- data/ruby/trema/action-set-vlan-vid.h +0 -42
- data/ruby/trema/action-strip-vlan.c +0 -81
- data/ruby/trema/action-strip-vlan.h +0 -42
- data/ruby/trema/action-vendor.c +0 -121
- data/ruby/trema/vendor-request.c +0 -193
- data/spec/trema/action-enqueue_spec.rb +0 -100
- data/spec/trema/action-set-dl-dst_spec.rb +0 -95
- data/spec/trema/action-set-dl-src_spec.rb +0 -92
- data/spec/trema/action-set-nw-dst_spec.rb +0 -96
- data/spec/trema/action-set-nw-src_spec.rb +0 -97
- data/spec/trema/action-set-nw-tos_spec.rb +0 -88
- data/spec/trema/action-set-tp-dst_spec.rb +0 -88
- data/spec/trema/action-set-tp-src_spec.rb +0 -88
- data/spec/trema/action-set-vlan-pcp_spec.rb +0 -91
- data/spec/trema/action-set-vlan-vid_spec.rb +0 -91
- data/spec/trema/action-vendor_spec.rb +0 -90
- data/spec/trema/vendor-request_spec.rb +0 -79
data/src/switch_manager/switch.h
CHANGED
@@ -42,6 +42,7 @@
|
|
42
42
|
int switch_event_connected( struct switch_info *switch_info );
|
43
43
|
int switch_event_disconnected( struct switch_info *switch_info );
|
44
44
|
int switch_event_recv_hello( struct switch_info *switch_info );
|
45
|
+
int switch_event_recv_echoreply( struct switch_info *switch_info, buffer *buf );
|
45
46
|
int switch_event_recv_featuresreply( struct switch_info *switch_info, uint64_t *datapath_id );
|
46
47
|
int switch_event_recv_from_application( uint64_t *datapath_id, char *application_service_name, buffer *buf );
|
47
48
|
int switch_event_disconnect_request( uint64_t *datapath_id );
|
@@ -42,7 +42,10 @@ struct switch_info {
|
|
42
42
|
struct notify_info *notify_info;
|
43
43
|
|
44
44
|
int secure_channel_fd; // socket file descriptor of secure channel
|
45
|
+
|
45
46
|
bool flow_cleanup;
|
47
|
+
bool cookie_translation;
|
48
|
+
bool deny_packet_in_on_startup;
|
46
49
|
|
47
50
|
int state; // state of switch secure channel
|
48
51
|
uint64_t datapath_id;
|
@@ -58,6 +61,8 @@ struct switch_info {
|
|
58
61
|
message_queue *recv_queue;
|
59
62
|
|
60
63
|
bool running_timer;
|
64
|
+
|
65
|
+
uint32_t echo_request_xid;
|
61
66
|
};
|
62
67
|
|
63
68
|
|
data/src/tremashark/README
CHANGED
@@ -68,8 +68,8 @@ How to run?
|
|
68
68
|
|
69
69
|
2. Send SIGUSR2 to processes to be monitored by tremashark. e.g.,
|
70
70
|
|
71
|
-
$ sudo kill -USR2 `cat tmp/learning_switch.pid`
|
72
|
-
$ sudo kill -USR2 `cat tmp/switch.
|
71
|
+
$ sudo kill -USR2 `cat tmp/pid/learning_switch.pid`
|
72
|
+
$ sudo kill -USR2 `cat tmp/pid/switch.0x1.pid`
|
73
73
|
|
74
74
|
Known issue
|
75
75
|
===========
|
@@ -225,6 +225,7 @@ static const value_string names_service_tag[] = {
|
|
225
225
|
{ MESSENGER_OPENFLOW_CONNECTED, "Switch Connected" },
|
226
226
|
{ MESSENGER_OPENFLOW_READY, "Switch Ready" },
|
227
227
|
{ MESSENGER_OPENFLOW_DISCONNECTED, "Switch Disconnected" },
|
228
|
+
{ MESSENGER_OPENFLOW_FAILD_TO_CONNECT, "Switch Failed to connect" },
|
228
229
|
{ 0, NULL },
|
229
230
|
};
|
230
231
|
|
data/trema
CHANGED
data/unittests/lib/log_test.c
CHANGED
@@ -20,8 +20,10 @@
|
|
20
20
|
*/
|
21
21
|
|
22
22
|
|
23
|
+
#include <stdarg.h>
|
23
24
|
#include <stdio.h>
|
24
25
|
#include <stdlib.h>
|
26
|
+
#include <syslog.h>
|
25
27
|
#include "checks.h"
|
26
28
|
#include "cmockery_trema.h"
|
27
29
|
#include "log.h"
|
@@ -81,6 +83,35 @@ mock_fprintf( FILE *stream, const char *format, ... ) {
|
|
81
83
|
}
|
82
84
|
|
83
85
|
|
86
|
+
static bool syslog_initialized = false;
|
87
|
+
|
88
|
+
static void
|
89
|
+
mock_openlog( const char *ident, int option, int facility ) {
|
90
|
+
check_expected( ident );
|
91
|
+
check_expected( option );
|
92
|
+
check_expected( facility );
|
93
|
+
|
94
|
+
syslog_initialized = true;
|
95
|
+
}
|
96
|
+
|
97
|
+
|
98
|
+
static void
|
99
|
+
mock_closelog( void ) {
|
100
|
+
syslog_initialized = false;
|
101
|
+
}
|
102
|
+
|
103
|
+
|
104
|
+
static void
|
105
|
+
mock_vsyslog( int priority, const char *format, va_list ap ) {
|
106
|
+
check_expected( priority );
|
107
|
+
|
108
|
+
char output[ 256 ];
|
109
|
+
vsnprintf( output, sizeof( output ), format, ap );
|
110
|
+
|
111
|
+
check_expected( output );
|
112
|
+
}
|
113
|
+
|
114
|
+
|
84
115
|
/********************************************************************************
|
85
116
|
* Setup and teardown function.
|
86
117
|
********************************************************************************/
|
@@ -104,20 +135,41 @@ setup() {
|
|
104
135
|
trema_abort = mock_abort;
|
105
136
|
trema_vprintf = mock_vprintf;
|
106
137
|
trema_fprintf = mock_fprintf;
|
138
|
+
trema_openlog = mock_openlog;
|
139
|
+
trema_closelog = mock_closelog;
|
140
|
+
trema_vsyslog = mock_vsyslog;
|
141
|
+
}
|
142
|
+
|
143
|
+
|
144
|
+
static void
|
145
|
+
setup_logger_stdout() {
|
146
|
+
setup();
|
147
|
+
init_log( "log_test.c", get_trema_tmp(), LOGGING_TYPE_STDOUT );
|
148
|
+
}
|
149
|
+
|
150
|
+
|
151
|
+
static void
|
152
|
+
setup_logger_file() {
|
153
|
+
setup();
|
154
|
+
init_log( "log_test.c", get_trema_tmp(), LOGGING_TYPE_FILE );
|
107
155
|
}
|
108
156
|
|
109
157
|
|
110
158
|
static void
|
111
|
-
|
159
|
+
setup_logger_file_stdout() {
|
112
160
|
setup();
|
113
|
-
init_log( "log_test.c", get_trema_tmp(),
|
161
|
+
init_log( "log_test.c", get_trema_tmp(), LOGGING_TYPE_FILE | LOGGING_TYPE_STDOUT );
|
114
162
|
}
|
115
163
|
|
116
164
|
|
117
165
|
static void
|
118
|
-
|
166
|
+
setup_logger_syslog() {
|
119
167
|
setup();
|
120
|
-
|
168
|
+
const char *ident = "log_test.c";
|
169
|
+
expect_string( mock_openlog, ident, ident );
|
170
|
+
expect_value( mock_openlog, option, LOG_NDELAY );
|
171
|
+
expect_value( mock_openlog, facility, LOG_USER );
|
172
|
+
init_log( ident, get_trema_tmp(), LOGGING_TYPE_SYSLOG );
|
121
173
|
}
|
122
174
|
|
123
175
|
|
@@ -132,6 +184,9 @@ teardown() {
|
|
132
184
|
trema_abort = abort;
|
133
185
|
trema_vprintf = vprintf;
|
134
186
|
trema_fprintf = fprintf;
|
187
|
+
trema_openlog = openlog;
|
188
|
+
trema_closelog = closelog;
|
189
|
+
trema_vsyslog = vsyslog;
|
135
190
|
}
|
136
191
|
|
137
192
|
|
@@ -142,8 +197,30 @@ teardown() {
|
|
142
197
|
void
|
143
198
|
test_init_log_reads_LOGING_LEVEL_environment_variable() {
|
144
199
|
setenv( "LOGGING_LEVEL", "CRITICAL", 1 );
|
145
|
-
init_log( "tetris", get_trema_tmp(),
|
146
|
-
assert_int_equal(
|
200
|
+
init_log( "tetris", get_trema_tmp(), LOGGING_TYPE_FILE );
|
201
|
+
assert_int_equal( LOG_CRIT, get_logging_level() );
|
202
|
+
}
|
203
|
+
|
204
|
+
|
205
|
+
void
|
206
|
+
test_init_log_opens_syslog() {
|
207
|
+
const char *ident = "tetris";
|
208
|
+
expect_string( mock_openlog, ident, ident );
|
209
|
+
expect_value( mock_openlog, option, LOG_NDELAY );
|
210
|
+
expect_value( mock_openlog, facility, LOG_USER );
|
211
|
+
init_log( ident, get_trema_tmp(), LOGGING_TYPE_SYSLOG );
|
212
|
+
assert_true( syslog_initialized );
|
213
|
+
}
|
214
|
+
|
215
|
+
|
216
|
+
/********************************************************************************
|
217
|
+
* Finalization test.
|
218
|
+
********************************************************************************/
|
219
|
+
|
220
|
+
void
|
221
|
+
test_finalize_log_closes_syslog() {
|
222
|
+
finalize_log();
|
223
|
+
assert_false( syslog_initialized );
|
147
224
|
}
|
148
225
|
|
149
226
|
|
@@ -160,7 +237,7 @@ test_default_logging_level_is_INFO() {
|
|
160
237
|
void
|
161
238
|
test_set_logging_level_succeed() {
|
162
239
|
set_logging_level( "critical" );
|
163
|
-
assert_int_equal(
|
240
|
+
assert_int_equal( LOG_CRIT, get_logging_level() );
|
164
241
|
}
|
165
242
|
|
166
243
|
|
@@ -170,6 +247,23 @@ test_set_logging_level_fail_with_invalid_value() {
|
|
170
247
|
}
|
171
248
|
|
172
249
|
|
250
|
+
void
|
251
|
+
test_set_logging_level_is_called_before_init_log() {
|
252
|
+
set_logging_level( "critical" );
|
253
|
+
init_log( "tetris", get_trema_tmp(), LOGGING_TYPE_FILE );
|
254
|
+
assert_int_equal( LOG_CRIT, get_logging_level() );
|
255
|
+
}
|
256
|
+
|
257
|
+
|
258
|
+
void
|
259
|
+
test_LOGGING_LEVEL_overrides_logging_level() {
|
260
|
+
setenv( "LOGGING_LEVEL", "DEBUG", 1 );
|
261
|
+
set_logging_level( "critical" );
|
262
|
+
init_log( "tetris", get_trema_tmp(), LOGGING_TYPE_FILE );
|
263
|
+
assert_int_equal( LOG_DEBUG, get_logging_level() );
|
264
|
+
}
|
265
|
+
|
266
|
+
|
173
267
|
/********************************************************************************
|
174
268
|
* critical() tests.
|
175
269
|
********************************************************************************/
|
@@ -365,18 +459,35 @@ test_debug_fail_if_NULL() {
|
|
365
459
|
|
366
460
|
|
367
461
|
/********************************************************************************
|
368
|
-
*
|
462
|
+
* Output type tests.
|
369
463
|
********************************************************************************/
|
370
464
|
|
371
465
|
void
|
372
466
|
test_output_to_stdout() {
|
373
467
|
expect_string( mock_vprintf, output, "Hello World\n" );
|
468
|
+
|
469
|
+
info( "Hello World" );
|
470
|
+
}
|
471
|
+
|
472
|
+
|
473
|
+
void
|
474
|
+
test_output_to_file_stdout() {
|
475
|
+
expect_string( mock_vprintf, output, "Hello World\n" );
|
374
476
|
expect_string( mock_fprintf, output, "Hello World\n" );
|
375
477
|
|
376
478
|
info( "Hello World" );
|
377
479
|
}
|
378
480
|
|
379
481
|
|
482
|
+
void
|
483
|
+
test_output_to_syslog() {
|
484
|
+
expect_value( mock_vsyslog, priority, LOG_INFO );
|
485
|
+
expect_string( mock_vsyslog, output, "Hello World" );
|
486
|
+
|
487
|
+
info( "Hello World" );
|
488
|
+
}
|
489
|
+
|
490
|
+
|
380
491
|
/********************************************************************************
|
381
492
|
* Run tests.
|
382
493
|
********************************************************************************/
|
@@ -386,66 +497,79 @@ main() {
|
|
386
497
|
const UnitTest tests[] = {
|
387
498
|
unit_test_setup_teardown( test_init_log_reads_LOGING_LEVEL_environment_variable,
|
388
499
|
reset_LOGGING_LEVEL, reset_LOGGING_LEVEL ),
|
500
|
+
unit_test_setup_teardown( test_init_log_opens_syslog,
|
501
|
+
setup, teardown ),
|
502
|
+
|
503
|
+
unit_test_setup_teardown( test_finalize_log_closes_syslog,
|
504
|
+
setup_logger_syslog, teardown ),
|
389
505
|
|
390
506
|
unit_test_setup_teardown( test_default_logging_level_is_INFO,
|
391
|
-
|
507
|
+
setup_logger_file, teardown ),
|
392
508
|
unit_test_setup_teardown( test_set_logging_level_succeed,
|
393
|
-
|
509
|
+
setup_logger_file, teardown ),
|
394
510
|
unit_test_setup_teardown( test_set_logging_level_fail_with_invalid_value,
|
395
|
-
|
511
|
+
setup_logger_file, teardown ),
|
512
|
+
unit_test_setup_teardown( test_set_logging_level_is_called_before_init_log,
|
513
|
+
setup, teardown ),
|
514
|
+
unit_test_setup_teardown( test_LOGGING_LEVEL_overrides_logging_level,
|
515
|
+
setup, teardown ),
|
396
516
|
|
397
517
|
unit_test_setup_teardown( test_critical_logs_if_logging_level_is_CRITICAL,
|
398
|
-
|
518
|
+
setup_logger_file, teardown ),
|
399
519
|
unit_test_setup_teardown( test_critical_logs_if_logging_level_is_ERROR,
|
400
|
-
|
520
|
+
setup_logger_file, teardown ),
|
401
521
|
unit_test_setup_teardown( test_critical_fail_if_NULL,
|
402
|
-
|
522
|
+
setup_logger_file, teardown ),
|
403
523
|
|
404
524
|
unit_test_setup_teardown( test_error_donothing_if_logging_level_is_CRITICAL,
|
405
|
-
|
525
|
+
setup_logger_file, teardown ),
|
406
526
|
unit_test_setup_teardown( test_error_logs_if_logging_level_is_ERROR,
|
407
|
-
|
527
|
+
setup_logger_file, teardown ),
|
408
528
|
unit_test_setup_teardown( test_error_logs_if_logging_level_is_WARNING,
|
409
|
-
|
529
|
+
setup_logger_file, teardown ),
|
410
530
|
unit_test_setup_teardown( test_error_fail_if_NULL,
|
411
|
-
|
531
|
+
setup_logger_file, teardown ),
|
412
532
|
|
413
533
|
unit_test_setup_teardown( test_warn_donothing_if_logging_level_is_ERROR,
|
414
|
-
|
534
|
+
setup_logger_file, teardown ),
|
415
535
|
unit_test_setup_teardown( test_warn_logs_if_logging_level_is_WARNING,
|
416
|
-
|
536
|
+
setup_logger_file, teardown ),
|
417
537
|
unit_test_setup_teardown( test_warn_logs_if_logging_level_is_NOTICE,
|
418
|
-
|
538
|
+
setup_logger_file, teardown ),
|
419
539
|
unit_test_setup_teardown( test_warn_fail_if_NULL,
|
420
|
-
|
540
|
+
setup_logger_file, teardown ),
|
421
541
|
|
422
542
|
unit_test_setup_teardown( test_notice_donothing_if_logging_level_is_WARNING,
|
423
|
-
|
543
|
+
setup_logger_file, teardown ),
|
424
544
|
unit_test_setup_teardown( test_notice_logs_if_logging_level_is_NOTICE,
|
425
|
-
|
545
|
+
setup_logger_file, teardown ),
|
426
546
|
unit_test_setup_teardown( test_notice_logs_if_logging_level_is_INFO,
|
427
|
-
|
547
|
+
setup_logger_file, teardown ),
|
428
548
|
unit_test_setup_teardown( test_notice_fail_if_NULL,
|
429
|
-
|
549
|
+
setup_logger_file, teardown ),
|
430
550
|
|
431
551
|
unit_test_setup_teardown( test_info_logs_if_logging_level_is_DEBUG,
|
432
|
-
|
552
|
+
setup_logger_file, teardown ),
|
433
553
|
unit_test_setup_teardown( test_info_logs_if_logging_level_is_INFO,
|
434
|
-
|
554
|
+
setup_logger_file, teardown ),
|
435
555
|
unit_test_setup_teardown( test_info_donothing_if_logging_level_is_NOTICE,
|
436
|
-
|
556
|
+
setup_logger_file, teardown ),
|
437
557
|
unit_test_setup_teardown( test_info_fail_if_NULL,
|
438
|
-
|
558
|
+
setup_logger_file, teardown ),
|
439
559
|
|
440
560
|
unit_test_setup_teardown( test_DEBUG_donothing_if_logging_level_is_INFO,
|
441
|
-
|
561
|
+
setup_logger_file, teardown ),
|
442
562
|
unit_test_setup_teardown( test_DEBUG_logs_if_logging_level_is_DEBUG,
|
443
|
-
|
563
|
+
setup_logger_file, teardown ),
|
444
564
|
unit_test_setup_teardown( test_debug_fail_if_NULL,
|
445
|
-
|
565
|
+
setup_logger_file, teardown ),
|
446
566
|
|
447
567
|
unit_test_setup_teardown( test_output_to_stdout,
|
448
|
-
|
568
|
+
setup_logger_stdout, teardown ),
|
569
|
+
unit_test_setup_teardown( test_output_to_file_stdout,
|
570
|
+
setup_logger_file_stdout, teardown ),
|
571
|
+
unit_test_setup_teardown( test_output_to_syslog,
|
572
|
+
setup_logger_syslog, teardown ),
|
449
573
|
};
|
450
574
|
return run_tests( tests );
|
451
575
|
}
|
@@ -54,6 +54,7 @@ extern hash_table *stats;
|
|
54
54
|
|
55
55
|
extern void assert_if_not_initialized();
|
56
56
|
extern void handle_error( const uint64_t datapath_id, buffer *data );
|
57
|
+
extern void handle_echo_reply( const uint64_t datapath_id, buffer *data );
|
57
58
|
extern void handle_vendor( const uint64_t datapath_id, buffer *data );
|
58
59
|
extern void handle_features_reply( const uint64_t datapath_id, buffer *data );
|
59
60
|
extern void handle_get_config_reply( const uint64_t datapath_id, buffer *data );
|
@@ -77,26 +78,28 @@ extern void handle_list_switches_reply( uint16_t message_type, void *data, size_
|
|
77
78
|
#define SWITCH_DISCONNECTED_USER_DATA ( ( void * ) 0x00020021 )
|
78
79
|
#define ERROR_HANDLER ( ( void * ) 0x00010001 )
|
79
80
|
#define ERROR_USER_DATA ( ( void * ) 0x00010011 )
|
80
|
-
#define
|
81
|
-
#define
|
82
|
-
#define
|
83
|
-
#define
|
84
|
-
#define
|
85
|
-
#define
|
86
|
-
#define
|
87
|
-
#define
|
88
|
-
#define
|
89
|
-
#define
|
90
|
-
#define
|
91
|
-
#define
|
92
|
-
#define
|
93
|
-
#define
|
94
|
-
#define
|
95
|
-
#define
|
96
|
-
#define
|
97
|
-
#define
|
98
|
-
#define
|
99
|
-
#define
|
81
|
+
#define ECHO_REPLY_HANDLER ( ( void * ) 0x00010002 )
|
82
|
+
#define ECHO_REPLY_USER_DATA ( ( void * ) 0x00010021 )
|
83
|
+
#define VENDOR_HANDLER ( ( void * ) 0x00010003 )
|
84
|
+
#define VENDOR_USER_DATA ( ( void * ) 0x00010031 )
|
85
|
+
#define FEATURES_REPLY_HANDLER ( ( void * ) 0x00010004 )
|
86
|
+
#define FEATURES_REPLY_USER_DATA ( ( void * ) 0x00010041 )
|
87
|
+
#define GET_CONFIG_REPLY_HANDLER ( ( void * ) 0x00010005 )
|
88
|
+
#define GET_CONFIG_REPLY_USER_DATA ( ( void * ) 0x00010051 )
|
89
|
+
#define PACKET_IN_HANDLER ( ( void * ) 0x00010006 )
|
90
|
+
#define PACKET_IN_USER_DATA ( ( void * ) 0x00010061 )
|
91
|
+
#define FLOW_REMOVED_HANDLER ( ( void * ) 0x00010007 )
|
92
|
+
#define FLOW_REMOVED_USER_DATA ( ( void * ) 0x00010071 )
|
93
|
+
#define PORT_STATUS_HANDLER ( ( void * ) 0x00010008 )
|
94
|
+
#define PORT_STATUS_USER_DATA ( ( void * ) 0x00010081 )
|
95
|
+
#define STATS_REPLY_HANDLER ( ( void * ) 0x00010009 )
|
96
|
+
#define STATS_REPLY_USER_DATA ( ( void * ) 0x00010091 )
|
97
|
+
#define BARRIER_REPLY_HANDLER ( ( void * ) 0x0001000a )
|
98
|
+
#define BARRIER_REPLY_USER_DATA ( ( void * ) 0x000100a1 )
|
99
|
+
#define QUEUE_GET_CONFIG_REPLY_HANDLER ( ( void * ) 0x0001000b )
|
100
|
+
#define QUEUE_GET_CONFIG_REPLY_USER_DATA ( ( void * ) 0x000100b1 )
|
101
|
+
#define LIST_SWITCHES_REPLY_HANDLER ( ( void * ) 0x0001000c )
|
102
|
+
#define LIST_SWITCHES_REPLY_USER_DATA ( ( void * ) 0x000100c1 )
|
100
103
|
|
101
104
|
static const pid_t PID = 12345;
|
102
105
|
static char SERVICE_NAME[] = "learning switch application 0";
|
@@ -112,11 +115,13 @@ static openflow_event_handlers_t NULL_EVENT_HANDLERS = { false, ( void * ) 0, (
|
|
112
115
|
( void * ) 0, ( void * ) 0,
|
113
116
|
( void * ) 0, ( void * ) 0,
|
114
117
|
( void * ) 0, ( void * ) 0,
|
118
|
+
( void * ) 0, ( void * ) 0,
|
115
119
|
( void * ) 0 };
|
116
120
|
static openflow_event_handlers_t EVENT_HANDLERS = {
|
117
121
|
false, SWITCH_READY_HANDLER, SWITCH_READY_USER_DATA,
|
118
122
|
SWITCH_DISCONNECTED_HANDLER, SWITCH_DISCONNECTED_USER_DATA,
|
119
123
|
ERROR_HANDLER, ERROR_USER_DATA,
|
124
|
+
ECHO_REPLY_HANDLER, ECHO_REPLY_USER_DATA,
|
120
125
|
VENDOR_HANDLER, VENDOR_USER_DATA,
|
121
126
|
FEATURES_REPLY_HANDLER, FEATURES_REPLY_USER_DATA,
|
122
127
|
GET_CONFIG_REPLY_HANDLER, GET_CONFIG_REPLY_USER_DATA,
|
@@ -241,6 +246,14 @@ mock_delete_message_replied_callback( char *service_name,
|
|
241
246
|
}
|
242
247
|
|
243
248
|
|
249
|
+
bool
|
250
|
+
mock_clear_send_queue( const char *service_name ) {
|
251
|
+
check_expected( service_name );
|
252
|
+
|
253
|
+
return ( bool ) mock();
|
254
|
+
}
|
255
|
+
|
256
|
+
|
244
257
|
bool
|
245
258
|
mock_parse_packet( buffer *buf ) {
|
246
259
|
calloc_packet_info( buf );
|
@@ -271,6 +284,25 @@ mock_error_handler( uint64_t datapath_id, uint32_t transaction_id, uint16_t type
|
|
271
284
|
}
|
272
285
|
|
273
286
|
|
287
|
+
static void
|
288
|
+
mock_echo_reply_handler( uint64_t datapath_id, uint32_t transaction_id, const buffer *data,
|
289
|
+
void *user_data ){
|
290
|
+
void *data_uc;
|
291
|
+
|
292
|
+
check_expected( &datapath_id );
|
293
|
+
check_expected( transaction_id );
|
294
|
+
if( data != NULL ) {
|
295
|
+
check_expected( data->length );
|
296
|
+
check_expected( data->data );
|
297
|
+
}
|
298
|
+
else {
|
299
|
+
data_uc = ( void * ) ( unsigned long ) data;
|
300
|
+
check_expected( data_uc );
|
301
|
+
}
|
302
|
+
check_expected( user_data );
|
303
|
+
}
|
304
|
+
|
305
|
+
|
274
306
|
static void
|
275
307
|
mock_vendor_handler( uint64_t datapath_id, uint32_t transaction_id, uint32_t vendor,
|
276
308
|
const buffer *data, void *user_data ){
|
@@ -468,7 +500,7 @@ mock_critical( char *format, ... ) {
|
|
468
500
|
}
|
469
501
|
|
470
502
|
|
471
|
-
static
|
503
|
+
static int
|
472
504
|
mock_get_logging_level() {
|
473
505
|
return LOG_DEBUG;
|
474
506
|
}
|
@@ -774,6 +806,26 @@ test_set_error_handler_if_handler_is_NULL() {
|
|
774
806
|
}
|
775
807
|
|
776
808
|
|
809
|
+
/********************************************************************************
|
810
|
+
* set_echo_reply_handler() tests.
|
811
|
+
********************************************************************************/
|
812
|
+
|
813
|
+
static void
|
814
|
+
test_set_echo_reply_handler() {
|
815
|
+
assert_true( set_echo_reply_handler( ECHO_REPLY_HANDLER, ECHO_REPLY_USER_DATA ) );
|
816
|
+
assert_int_equal( event_handlers.echo_reply_callback, ECHO_REPLY_HANDLER );
|
817
|
+
assert_int_equal( event_handlers.echo_reply_user_data, ECHO_REPLY_USER_DATA );
|
818
|
+
}
|
819
|
+
|
820
|
+
|
821
|
+
static void
|
822
|
+
test_set_echo_reply_handler_if_handler_is_NULL() {
|
823
|
+
expect_string( mock_die, format, "Callback function ( echo_reply_handler ) must not be NULL." );
|
824
|
+
expect_assert_failure( set_echo_reply_handler( NULL, NULL ) );
|
825
|
+
assert_memory_equal( &event_handlers, &NULL_EVENT_HANDLERS, sizeof( event_handlers ) );
|
826
|
+
}
|
827
|
+
|
828
|
+
|
777
829
|
/********************************************************************************
|
778
830
|
* set_vendor_handler() tests.
|
779
831
|
********************************************************************************/
|
@@ -1367,6 +1419,91 @@ test_handle_error_if_message_length_is_zero() {
|
|
1367
1419
|
}
|
1368
1420
|
|
1369
1421
|
|
1422
|
+
/********************************************************************************
|
1423
|
+
* handle_echo_request() tests.
|
1424
|
+
********************************************************************************/
|
1425
|
+
|
1426
|
+
static void
|
1427
|
+
test_handle_echo_reply() {
|
1428
|
+
buffer *buffer, *data;
|
1429
|
+
|
1430
|
+
data = alloc_buffer_with_length( 16 );
|
1431
|
+
append_back_buffer( data, 16 );
|
1432
|
+
memset( data->data, 'a', 16 );
|
1433
|
+
|
1434
|
+
buffer = create_echo_reply( TRANSACTION_ID, data );
|
1435
|
+
|
1436
|
+
expect_memory( mock_echo_reply_handler, &datapath_id, &DATAPATH_ID, sizeof( uint64_t ) );
|
1437
|
+
expect_value( mock_echo_reply_handler, transaction_id, TRANSACTION_ID );
|
1438
|
+
expect_value( mock_echo_reply_handler, data->length, data->length );
|
1439
|
+
expect_memory( mock_echo_reply_handler, data->data, data->data, data->length );
|
1440
|
+
expect_memory( mock_echo_reply_handler, user_data, USER_DATA, USER_DATA_LEN );
|
1441
|
+
|
1442
|
+
set_echo_reply_handler( mock_echo_reply_handler, USER_DATA );
|
1443
|
+
handle_echo_reply( DATAPATH_ID, buffer );
|
1444
|
+
|
1445
|
+
free_buffer( data );
|
1446
|
+
free_buffer( buffer );
|
1447
|
+
}
|
1448
|
+
|
1449
|
+
|
1450
|
+
static void
|
1451
|
+
test_handle_echo_reply_without_data() {
|
1452
|
+
buffer *buffer;
|
1453
|
+
|
1454
|
+
buffer = create_echo_reply( TRANSACTION_ID, NULL );
|
1455
|
+
|
1456
|
+
expect_memory( mock_echo_reply_handler, &datapath_id, &DATAPATH_ID, sizeof( uint64_t ) );
|
1457
|
+
expect_value( mock_echo_reply_handler, transaction_id, TRANSACTION_ID );
|
1458
|
+
expect_value( mock_echo_reply_handler, data_uc, NULL );
|
1459
|
+
expect_memory( mock_echo_reply_handler, user_data, USER_DATA, USER_DATA_LEN );
|
1460
|
+
|
1461
|
+
set_echo_reply_handler( mock_echo_reply_handler, USER_DATA );
|
1462
|
+
handle_echo_reply( DATAPATH_ID, buffer );
|
1463
|
+
|
1464
|
+
free_buffer( buffer );
|
1465
|
+
}
|
1466
|
+
|
1467
|
+
|
1468
|
+
static void
|
1469
|
+
test_handle_echo_reply_if_handler_is_not_registered() {
|
1470
|
+
buffer *buffer, *data;
|
1471
|
+
|
1472
|
+
data = alloc_buffer_with_length( 16 );
|
1473
|
+
append_back_buffer( data, 16 );
|
1474
|
+
memset( data->data, 'a', 16 );
|
1475
|
+
|
1476
|
+
buffer = create_echo_reply( TRANSACTION_ID, data );
|
1477
|
+
|
1478
|
+
// FIXME
|
1479
|
+
|
1480
|
+
handle_echo_reply( DATAPATH_ID, buffer );
|
1481
|
+
|
1482
|
+
free_buffer( data );
|
1483
|
+
free_buffer( buffer );
|
1484
|
+
}
|
1485
|
+
|
1486
|
+
|
1487
|
+
static void
|
1488
|
+
test_handle_echo_reply_if_message_is_NULL() {
|
1489
|
+
set_echo_reply_handler( mock_echo_reply_handler, USER_DATA );
|
1490
|
+
expect_assert_failure( handle_echo_reply( DATAPATH_ID, NULL ) );
|
1491
|
+
}
|
1492
|
+
|
1493
|
+
|
1494
|
+
static void
|
1495
|
+
test_handle_echo_reply_if_message_length_is_zero() {
|
1496
|
+
buffer *buffer;
|
1497
|
+
|
1498
|
+
buffer = alloc_buffer_with_length( 32 );
|
1499
|
+
|
1500
|
+
set_echo_reply_handler( mock_echo_reply_handler, USER_DATA );
|
1501
|
+
expect_assert_failure( handle_echo_reply( DATAPATH_ID, buffer ) );
|
1502
|
+
|
1503
|
+
free_buffer( buffer );
|
1504
|
+
}
|
1505
|
+
|
1506
|
+
|
1370
1507
|
/********************************************************************************
|
1371
1508
|
* handle_vendor() tests.
|
1372
1509
|
********************************************************************************/
|
@@ -2665,6 +2802,9 @@ test_handle_switch_events_if_type_is_MESSENGER_OPENFLOW_DISCONNECTED() {
|
|
2665
2802
|
expect_memory( mock_switch_disconnected_handler, &datapath_id, &DATAPATH_ID, sizeof( uint64_t ) );
|
2666
2803
|
expect_value( mock_switch_disconnected_handler, user_data, SWITCH_DISCONNECTED_USER_DATA );
|
2667
2804
|
|
2805
|
+
expect_string( mock_clear_send_queue, service_name, REMOTE_SERVICE_NAME );
|
2806
|
+
will_return( mock_clear_send_queue, true );
|
2807
|
+
|
2668
2808
|
set_switch_disconnected_handler( mock_switch_disconnected_handler, SWITCH_DISCONNECTED_USER_DATA );
|
2669
2809
|
handle_switch_events( MESSENGER_OPENFLOW_DISCONNECTED, data->data, data->length );
|
2670
2810
|
|
@@ -3272,6 +3412,9 @@ test_handle_message_if_type_is_MESSENGER_OPENFLOW_DISCONNECTED() {
|
|
3272
3412
|
expect_memory( mock_switch_disconnected_handler, &datapath_id, &DATAPATH_ID, sizeof( uint64_t ) );
|
3273
3413
|
expect_value( mock_switch_disconnected_handler, user_data, SWITCH_DISCONNECTED_USER_DATA );
|
3274
3414
|
|
3415
|
+
expect_string( mock_clear_send_queue, service_name, REMOTE_SERVICE_NAME );
|
3416
|
+
will_return( mock_clear_send_queue, true );
|
3417
|
+
|
3275
3418
|
set_switch_disconnected_handler( mock_switch_disconnected_handler, SWITCH_DISCONNECTED_USER_DATA );
|
3276
3419
|
handle_message( MESSENGER_OPENFLOW_DISCONNECTED, data->data, data->length );
|
3277
3420
|
|
@@ -3319,6 +3462,28 @@ test_handle_message_if_unhandled_message_type() {
|
|
3319
3462
|
}
|
3320
3463
|
|
3321
3464
|
|
3465
|
+
/********************************************************************************
|
3466
|
+
* delete_openflow_messages() tests.
|
3467
|
+
********************************************************************************/
|
3468
|
+
|
3469
|
+
static void
|
3470
|
+
test_delete_openflow_messages() {
|
3471
|
+
expect_string( mock_clear_send_queue, service_name, REMOTE_SERVICE_NAME );
|
3472
|
+
will_return( mock_clear_send_queue, true );
|
3473
|
+
|
3474
|
+
assert_true( delete_openflow_messages( DATAPATH_ID ) );
|
3475
|
+
}
|
3476
|
+
|
3477
|
+
|
3478
|
+
static void
|
3479
|
+
test_delete_openflow_messages_if_clear_send_queue_fails() {
|
3480
|
+
expect_string( mock_clear_send_queue, service_name, REMOTE_SERVICE_NAME );
|
3481
|
+
will_return( mock_clear_send_queue, false );
|
3482
|
+
|
3483
|
+
assert_false( delete_openflow_messages( DATAPATH_ID ) );
|
3484
|
+
}
|
3485
|
+
|
3486
|
+
|
3322
3487
|
/********************************************************************************
|
3323
3488
|
* Run tests.
|
3324
3489
|
********************************************************************************/
|
@@ -3326,6 +3491,7 @@ test_handle_message_if_unhandled_message_type() {
|
|
3326
3491
|
int
|
3327
3492
|
main() {
|
3328
3493
|
const UnitTest tests[] = {
|
3494
|
+
// initialization and finalization tests.
|
3329
3495
|
unit_test_setup_teardown( test_init_openflow_application_interface_with_valid_custom_service_name, cleanup, cleanup ),
|
3330
3496
|
unit_test_setup_teardown( test_init_openflow_application_interface_with_too_long_custom_service_name, cleanup, cleanup ),
|
3331
3497
|
unit_test_setup_teardown( test_init_openflow_application_interface_if_already_initialized, init, cleanup ),
|
@@ -3342,78 +3508,57 @@ main() {
|
|
3342
3508
|
unit_test_setup_teardown( test_handle_switch_ready, init, cleanup ),
|
3343
3509
|
unit_test_setup_teardown( test_handle_switch_ready_with_simple_handler, init, cleanup ),
|
3344
3510
|
|
3511
|
+
// switch disconnected handler tests.
|
3345
3512
|
unit_test_setup_teardown( test_set_switch_disconnected_handler, init, cleanup ),
|
3346
3513
|
unit_test_setup_teardown( test_set_switch_disconnected_handler_if_handler_is_NULL, init, cleanup ),
|
3347
3514
|
|
3515
|
+
// error handler tests.
|
3348
3516
|
unit_test_setup_teardown( test_set_error_handler, init, cleanup ),
|
3349
3517
|
unit_test_setup_teardown( test_set_error_handler_if_handler_is_NULL, init, cleanup ),
|
3350
|
-
|
3351
|
-
unit_test_setup_teardown( test_set_vendor_handler, init, cleanup ),
|
3352
|
-
unit_test_setup_teardown( test_set_vendor_handler_if_handler_is_NULL, init, cleanup ),
|
3353
|
-
|
3354
|
-
unit_test_setup_teardown( test_set_features_reply_handler, init, cleanup ),
|
3355
|
-
unit_test_setup_teardown( test_set_features_reply_handler_if_handler_is_NULL, init, cleanup ),
|
3356
|
-
|
3357
|
-
unit_test_setup_teardown( test_set_get_config_reply_handler, init, cleanup ),
|
3358
|
-
unit_test_setup_teardown( test_set_get_config_reply_handler_if_handler_is_NULL, init, cleanup ),
|
3359
|
-
|
3360
|
-
unit_test_setup_teardown( test_set_flow_removed_handler, init, cleanup ),
|
3361
|
-
unit_test_setup_teardown( test_set_flow_removed_handler_if_handler_is_NULL, init, cleanup ),
|
3362
|
-
|
3363
|
-
unit_test_setup_teardown( test_set_port_status_handler, init, cleanup ),
|
3364
|
-
unit_test_setup_teardown( test_set_port_status_handler_if_handler_is_NULL, init, cleanup ),
|
3365
|
-
|
3366
|
-
unit_test_setup_teardown( test_set_stats_reply_handler, init, cleanup ),
|
3367
|
-
unit_test_setup_teardown( test_set_stats_reply_handler_if_handler_is_NULL, init, cleanup ),
|
3368
|
-
|
3369
|
-
unit_test_setup_teardown( test_set_barrier_reply_handler, init, cleanup ),
|
3370
|
-
unit_test_setup_teardown( test_set_barrier_reply_handler_if_handler_is_NULL, init, cleanup ),
|
3371
|
-
|
3372
|
-
unit_test_setup_teardown( test_set_queue_get_config_reply_handler, init, cleanup ),
|
3373
|
-
unit_test_setup_teardown( test_set_queue_get_config_reply_handler_if_handler_is_NULL, init, cleanup ),
|
3374
|
-
|
3375
|
-
unit_test_setup_teardown( test_set_list_switches_reply_handler, init, cleanup ),
|
3376
|
-
unit_test_setup_teardown( test_set_list_switches_reply_handler_if_handler_is_NULL, init, cleanup ),
|
3377
|
-
|
3378
|
-
unit_test_setup_teardown( test_send_openflow_message, init, cleanup ),
|
3379
|
-
unit_test_setup_teardown( test_send_openflow_message_if_message_is_NULL, init, cleanup ),
|
3380
|
-
unit_test_setup_teardown( test_send_openflow_message_if_message_length_is_zero, init, cleanup ),
|
3381
|
-
|
3382
3518
|
unit_test_setup_teardown( test_handle_error, init, cleanup ),
|
3383
3519
|
unit_test_setup_teardown( test_handle_error_if_handler_is_not_registered, init, cleanup ),
|
3384
3520
|
unit_test_setup_teardown( test_handle_error_if_message_is_NULL, init, cleanup ),
|
3385
3521
|
unit_test_setup_teardown( test_handle_error_if_message_length_is_zero, init, cleanup ),
|
3386
3522
|
|
3523
|
+
// echo_reply handler tests.
|
3524
|
+
unit_test_setup_teardown( test_set_echo_reply_handler, init, cleanup ),
|
3525
|
+
unit_test_setup_teardown( test_set_echo_reply_handler_if_handler_is_NULL, init, cleanup ),
|
3526
|
+
unit_test_setup_teardown( test_handle_echo_reply, init, cleanup ),
|
3527
|
+
unit_test_setup_teardown( test_handle_echo_reply_without_data, init, cleanup ),
|
3528
|
+
unit_test_setup_teardown( test_handle_echo_reply_if_handler_is_not_registered, init, cleanup ),
|
3529
|
+
unit_test_setup_teardown( test_handle_echo_reply_if_message_is_NULL, init, cleanup ),
|
3530
|
+
unit_test_setup_teardown( test_handle_echo_reply_if_message_length_is_zero, init, cleanup ),
|
3531
|
+
|
3532
|
+
// vendor handler tests.
|
3533
|
+
unit_test_setup_teardown( test_set_vendor_handler, init, cleanup ),
|
3534
|
+
unit_test_setup_teardown( test_set_vendor_handler_if_handler_is_NULL, init, cleanup ),
|
3535
|
+
|
3387
3536
|
unit_test_setup_teardown( test_handle_vendor, init, cleanup ),
|
3388
3537
|
unit_test_setup_teardown( test_handle_vendor_without_data, init, cleanup ),
|
3389
3538
|
unit_test_setup_teardown( test_handle_vendor_if_handler_is_not_registered, init, cleanup ),
|
3390
3539
|
unit_test_setup_teardown( test_handle_vendor_if_message_is_NULL, init, cleanup ),
|
3391
3540
|
unit_test_setup_teardown( test_handle_vendor_if_message_length_is_zero, init, cleanup ),
|
3392
3541
|
|
3542
|
+
// features reply handler tests.
|
3543
|
+
unit_test_setup_teardown( test_set_features_reply_handler, init, cleanup ),
|
3544
|
+
unit_test_setup_teardown( test_set_features_reply_handler_if_handler_is_NULL, init, cleanup ),
|
3393
3545
|
unit_test_setup_teardown( test_handle_features_reply, init, cleanup ),
|
3394
3546
|
unit_test_setup_teardown( test_handle_features_reply_without_phy_port, init, cleanup ),
|
3395
3547
|
unit_test_setup_teardown( test_handle_features_reply_if_handler_is_not_registered, init, cleanup ),
|
3396
3548
|
unit_test_setup_teardown( test_handle_features_reply_if_message_is_NULL, init, cleanup ),
|
3397
3549
|
unit_test_setup_teardown( test_handle_features_reply_if_message_length_is_zero, init, cleanup ),
|
3398
3550
|
|
3551
|
+
// get config reply handler tests.
|
3552
|
+
unit_test_setup_teardown( test_set_get_config_reply_handler, init, cleanup ),
|
3553
|
+
unit_test_setup_teardown( test_set_get_config_reply_handler_if_handler_is_NULL, init, cleanup ),
|
3399
3554
|
unit_test_setup_teardown( test_handle_get_config_reply, init, cleanup ),
|
3400
3555
|
unit_test_setup_teardown( test_handle_get_config_reply_if_handler_is_not_registered, init, cleanup ),
|
3401
3556
|
unit_test_setup_teardown( test_handle_get_config_reply_if_message_is_NULL, init, cleanup ),
|
3402
3557
|
unit_test_setup_teardown( test_handle_get_config_reply_if_message_length_is_zero, init, cleanup ),
|
3403
3558
|
|
3404
|
-
//
|
3405
|
-
unit_test_setup_teardown(
|
3406
|
-
unit_test_setup_teardown(
|
3407
|
-
unit_test_setup_teardown( test_set_packet_in_handler_should_die_if_handler_is_NULL, init, cleanup ),
|
3408
|
-
unit_test_setup_teardown( test_handle_packet_in, init, cleanup ),
|
3409
|
-
unit_test_setup_teardown( test_handle_packet_in_with_simple_handler, init, cleanup ),
|
3410
|
-
unit_test_setup_teardown( test_handle_packet_in_with_malformed_packet, init, cleanup ),
|
3411
|
-
unit_test_setup_teardown( test_handle_packet_in_without_data, init, cleanup ),
|
3412
|
-
unit_test_setup_teardown( test_handle_packet_in_without_handler, init, cleanup ),
|
3413
|
-
unit_test_setup_teardown( test_handle_packet_in_should_die_if_message_is_NULL, init, cleanup ),
|
3414
|
-
unit_test_setup_teardown( test_handle_packet_in_should_die_if_message_length_is_zero, init, cleanup ),
|
3415
|
-
|
3416
|
-
// Flow removed handler tests.
|
3559
|
+
// flow removed handler tests.
|
3560
|
+
unit_test_setup_teardown( test_set_flow_removed_handler, init, cleanup ),
|
3561
|
+
unit_test_setup_teardown( test_set_flow_removed_handler_if_handler_is_NULL, init, cleanup ),
|
3417
3562
|
unit_test_setup_teardown( test_handle_flow_removed, init, cleanup ),
|
3418
3563
|
unit_test_setup_teardown( test_handle_flow_removed_with_simple_handler, init, cleanup ),
|
3419
3564
|
unit_test_setup_teardown( test_set_simple_flow_removed_handler, init, cleanup ),
|
@@ -3421,11 +3566,17 @@ main() {
|
|
3421
3566
|
unit_test_setup_teardown( test_handle_flow_removed_if_message_is_NULL, init, cleanup ),
|
3422
3567
|
unit_test_setup_teardown( test_handle_flow_removed_if_message_length_is_zero, init, cleanup ),
|
3423
3568
|
|
3569
|
+
// port status handler tests.
|
3570
|
+
unit_test_setup_teardown( test_set_port_status_handler, init, cleanup ),
|
3571
|
+
unit_test_setup_teardown( test_set_port_status_handler_if_handler_is_NULL, init, cleanup ),
|
3424
3572
|
unit_test_setup_teardown( test_handle_port_status, init, cleanup ),
|
3425
3573
|
unit_test_setup_teardown( test_handle_port_status_if_handler_is_not_registered, init, cleanup ),
|
3426
3574
|
unit_test_setup_teardown( test_handle_port_status_if_message_is_NULL, init, cleanup ),
|
3427
3575
|
unit_test_setup_teardown( test_handle_port_status_if_message_length_is_zero, init, cleanup ),
|
3428
3576
|
|
3577
|
+
// stats reply handler tests.
|
3578
|
+
unit_test_setup_teardown( test_set_stats_reply_handler, init, cleanup ),
|
3579
|
+
unit_test_setup_teardown( test_set_stats_reply_handler_if_handler_is_NULL, init, cleanup ),
|
3429
3580
|
unit_test_setup_teardown( test_handle_stats_reply_if_type_is_OFPST_DESC, init, cleanup ),
|
3430
3581
|
unit_test_setup_teardown( test_handle_stats_reply_if_type_is_OFPST_FLOW, init, cleanup ),
|
3431
3582
|
unit_test_setup_teardown( test_handle_stats_reply_if_type_is_OFPST_AGGREGATE, init, cleanup ),
|
@@ -3438,24 +3589,47 @@ main() {
|
|
3438
3589
|
unit_test_setup_teardown( test_handle_stats_reply_if_message_is_NULL, init, cleanup ),
|
3439
3590
|
unit_test_setup_teardown( test_handle_stats_reply_if_message_length_is_zero, init, cleanup ),
|
3440
3591
|
|
3592
|
+
// barrier reply handler tests.
|
3593
|
+
unit_test_setup_teardown( test_set_barrier_reply_handler, init, cleanup ),
|
3594
|
+
unit_test_setup_teardown( test_set_barrier_reply_handler_if_handler_is_NULL, init, cleanup ),
|
3441
3595
|
unit_test_setup_teardown( test_handle_barrier_reply, init, cleanup ),
|
3442
3596
|
unit_test_setup_teardown( test_handle_barrier_reply_if_handler_is_not_registered, init, cleanup ),
|
3443
3597
|
unit_test_setup_teardown( test_handle_barrier_reply_if_message_is_NULL, init, cleanup ),
|
3444
3598
|
unit_test_setup_teardown( test_handle_barrier_reply_if_message_length_is_zero, init, cleanup ),
|
3445
3599
|
|
3600
|
+
// queue get config reply handler tests.
|
3601
|
+
unit_test_setup_teardown( test_set_queue_get_config_reply_handler, init, cleanup ),
|
3602
|
+
unit_test_setup_teardown( test_set_queue_get_config_reply_handler_if_handler_is_NULL, init, cleanup ),
|
3446
3603
|
unit_test_setup_teardown( test_handle_queue_get_config_reply, init, cleanup ),
|
3447
3604
|
unit_test_setup_teardown( test_handle_queue_get_config_reply_without_queues, init, cleanup ),
|
3448
3605
|
unit_test_setup_teardown( test_handle_queue_get_config_reply_if_handler_is_not_registered, init, cleanup ),
|
3449
3606
|
unit_test_setup_teardown( test_handle_queue_get_config_reply_if_message_is_NULL, init, cleanup ),
|
3450
3607
|
unit_test_setup_teardown( test_handle_queue_get_config_reply_if_message_length_is_zero, init, cleanup ),
|
3451
3608
|
|
3452
|
-
|
3453
|
-
unit_test_setup_teardown(
|
3454
|
-
unit_test_setup_teardown(
|
3609
|
+
// list switches reply handler tests.
|
3610
|
+
unit_test_setup_teardown( test_set_list_switches_reply_handler, init, cleanup ),
|
3611
|
+
unit_test_setup_teardown( test_set_list_switches_reply_handler_if_handler_is_NULL, init, cleanup ),
|
3455
3612
|
unit_test_setup_teardown( test_handle_list_switches_reply, init, cleanup ),
|
3456
3613
|
unit_test_setup_teardown( test_handle_list_switches_reply_if_data_is_NULL, init, cleanup ),
|
3457
3614
|
unit_test_setup_teardown( test_handle_list_switches_reply_if_length_is_zero, init, cleanup ),
|
3458
3615
|
|
3616
|
+
// packet-in handler tests.
|
3617
|
+
unit_test_setup_teardown( test_set_packet_in_handler, init, cleanup ),
|
3618
|
+
unit_test_setup_teardown( test_set_simple_packet_in_handler, init, cleanup ),
|
3619
|
+
unit_test_setup_teardown( test_set_packet_in_handler_should_die_if_handler_is_NULL, init, cleanup ),
|
3620
|
+
unit_test_setup_teardown( test_handle_packet_in, init, cleanup ),
|
3621
|
+
unit_test_setup_teardown( test_handle_packet_in_with_simple_handler, init, cleanup ),
|
3622
|
+
unit_test_setup_teardown( test_handle_packet_in_with_malformed_packet, init, cleanup ),
|
3623
|
+
unit_test_setup_teardown( test_handle_packet_in_without_data, init, cleanup ),
|
3624
|
+
unit_test_setup_teardown( test_handle_packet_in_without_handler, init, cleanup ),
|
3625
|
+
unit_test_setup_teardown( test_handle_packet_in_should_die_if_message_is_NULL, init, cleanup ),
|
3626
|
+
unit_test_setup_teardown( test_handle_packet_in_should_die_if_message_length_is_zero, init, cleanup ),
|
3627
|
+
|
3628
|
+
// miscellaneous tests.
|
3629
|
+
unit_test_setup_teardown( test_insert_dpid, init, cleanup ),
|
3630
|
+
unit_test_setup_teardown( test_insert_dpid_if_head_is_NULL, init, cleanup ),
|
3631
|
+
unit_test_setup_teardown( test_insert_dpid_if_dpid_is_NULL, init, cleanup ),
|
3632
|
+
|
3459
3633
|
unit_test_setup_teardown( test_handle_switch_events_if_type_is_MESSENGER_OPENFLOW_CONNECTED, init, cleanup ),
|
3460
3634
|
unit_test_setup_teardown( test_handle_switch_events_if_type_is_MESSENGER_OPENFLOW_DISCONNECTED, init, cleanup ),
|
3461
3635
|
unit_test_setup_teardown( test_handle_switch_events_if_message_is_NULL, init, cleanup ),
|
@@ -3475,6 +3649,15 @@ main() {
|
|
3475
3649
|
unit_test_setup_teardown( test_handle_message_if_message_is_NULL, init, cleanup ),
|
3476
3650
|
unit_test_setup_teardown( test_handle_message_if_message_length_is_zero, init, cleanup ),
|
3477
3651
|
unit_test_setup_teardown( test_handle_message_if_unhandled_message_type, init, cleanup ),
|
3652
|
+
|
3653
|
+
// send_openflow_message() tests.
|
3654
|
+
unit_test_setup_teardown( test_send_openflow_message, init, cleanup ),
|
3655
|
+
unit_test_setup_teardown( test_send_openflow_message_if_message_is_NULL, init, cleanup ),
|
3656
|
+
unit_test_setup_teardown( test_send_openflow_message_if_message_length_is_zero, init, cleanup ),
|
3657
|
+
|
3658
|
+
// delete_openflow_messages() tests.
|
3659
|
+
unit_test_setup_teardown( test_delete_openflow_messages, init, cleanup ),
|
3660
|
+
unit_test_setup_teardown( test_delete_openflow_messages_if_clear_send_queue_fails, init, cleanup ),
|
3478
3661
|
};
|
3479
3662
|
return run_tests( tests );
|
3480
3663
|
}
|