git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ofproto: Fix potential leak during flow mods.
[sliver-openvswitch.git]
/
tests
/
test-multipath.c
diff --git
a/tests/test-multipath.c
b/tests/test-multipath.c
index
8442bc2
..
50747d9
100644
(file)
--- a/
tests/test-multipath.c
+++ b/
tests/test-multipath.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (c) 2010, 2012 Nicira, Inc.
+ * Copyright (c) 2010, 2012
, 2013, 2014
Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-26,25
+26,29
@@
#include "flow.h"
#include "ofp-actions.h"
#include "flow.h"
#include "ofp-actions.h"
-#include "random.h"
#include "util.h"
#include "util.h"
+#include "ovstest.h"
-int
-main(int argc, char *argv[])
+static void
+
test_multipath_
main(int argc, char *argv[])
{
enum { MP_MAX_LINKS = 63 };
struct ofpact_multipath mp;
bool ok = true;
{
enum { MP_MAX_LINKS = 63 };
struct ofpact_multipath mp;
bool ok = true;
+ char *error;
int n;
set_program_name(argv[0]);
int n;
set_program_name(argv[0]);
- random_init();
if (argc != 2) {
ovs_fatal(0, "usage: %s multipath_action", program_name);
}
if (argc != 2) {
ovs_fatal(0, "usage: %s multipath_action", program_name);
}
- multipath_parse(&mp, argv[1]);
+ error = multipath_parse(&mp, argv[1]);
+ if (error) {
+ ovs_fatal(0, "%s", error);
+ }
+
for (n = 1; n <= MP_MAX_LINKS; n++) {
enum { N_FLOWS = 65536 };
double disruption, perfect, distribution;
for (n = 1; n <= MP_MAX_LINKS; n++) {
enum { N_FLOWS = 65536 };
double disruption, perfect, distribution;
@@
-57,18
+61,17
@@
main(int argc, char *argv[])
memset(histogram, 0, sizeof histogram);
for (i = 0; i < N_FLOWS; i++) {
int old_link, new_link;
memset(histogram, 0, sizeof histogram);
for (i = 0; i < N_FLOWS; i++) {
int old_link, new_link;
+ struct flow_wildcards wc;
struct flow flow;
struct flow flow;
- random_bytes(&flow, sizeof flow);
- memset(flow.zeros, 0, sizeof flow.zeros);
- flow.mpls_depth = 0;
+ flow_random_hash_fields(&flow);
mp.max_link = n - 1;
mp.max_link = n - 1;
- multipath_execute(&mp, &flow);
+ multipath_execute(&mp, &flow
, &wc
);
old_link = flow.regs[0];
mp.max_link = n;
old_link = flow.regs[0];
mp.max_link = n;
- multipath_execute(&mp, &flow);
+ multipath_execute(&mp, &flow
, &wc
);
new_link = flow.regs[0];
assert(old_link >= 0 && old_link < n);
new_link = flow.regs[0];
assert(old_link >= 0 && old_link < n);
@@
-126,9
+129,11
@@
main(int argc, char *argv[])
break;
default:
break;
default:
- NOT_REACHED();
+
OVS_
NOT_REACHED();
}
}
}
}
-
return ok ? 0 : 1
;
+
exit(ok ? 0 : 1)
;
}
}
+
+OVSTEST_REGISTER("test-multipath", test_multipath_main);