Attention is currently required from: flichtenheld, plaisthos.
Hello plaisthos, flichtenheld,
I'd like you to do a code review.
Please visit
http://gerrit.openvpn.net/c/openvpn/+/1316?usp=email
to review the following change.
Change subject: PUSH_UPDATE server: added new unit tests and improved
documentation
......................................................................
PUSH_UPDATE server: added new unit tests and improved documentation
Change-Id: Idba419681fe3ccc4e6e2f6ce7592332dcff62cd9
Signed-off-by: Marco Baffo <[email protected]>
---
M src/openvpn/push_util.c
M tests/unit_tests/openvpn/test_push_update_msg.c
2 files changed, 76 insertions(+), 4 deletions(-)
git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/16/1316/1
diff --git a/src/openvpn/push_util.c b/src/openvpn/push_util.c
index 552679a..d23b96d 100644
--- a/src/openvpn/push_util.c
+++ b/src/openvpn/push_util.c
@@ -270,6 +270,9 @@
* we want to send exceeds that size we have to split it into smaller
messages */
ASSERT(push_bundle_size > extra);
const size_t safe_cap = push_bundle_size - extra;
+ /* the number of messages will be the total message length (just the inner
message, the options,
+ * excluding `PUSH_UPDATE,` string and possible `,push-continuation n`
string) divided by safe_cap,
+ * plus 1 if there is a remainder */
size_t msgs_num = (strlen(msg) / safe_cap) + ((strlen(msg) % safe_cap) !=
0);
struct buffer *msgs = gc_malloc((msgs_num + 1) * sizeof(struct buffer),
true, &gc);
diff --git a/tests/unit_tests/openvpn/test_push_update_msg.c
b/tests/unit_tests/openvpn/test_push_update_msg.c
index 516e94c..83c27bb 100644
--- a/tests/unit_tests/openvpn/test_push_update_msg.c
+++ b/tests/unit_tests/openvpn/test_push_update_msg.c
@@ -136,10 +136,19 @@
bool
send_control_channel_string(struct context *c, const char *str, msglvl_t
msglevel)
{
- if (res && res[i] && strcmp(res[i], str))
+ if (res && res[i])
{
- printf("\n\nexpected: %s\n\n actual: %s\n\n", res[i], str);
- return false;
+ size_t res_len = strlen(res[i]);
+ size_t str_len = strlen(str);
+ if (res_len != str_len || strcmp(res[i], str))
+ {
+ if (res_len != str_len)
+ {
+ printf("\n\nexpected_size: %lu\n actual_size: %lu", res_len,
str_len);
+ }
+ printf("\n\nexpected: %s\n\n actual: %s\n\n", res[i], str);
+ return false;
+ }
}
i++;
return true;
@@ -339,6 +348,23 @@
"PUSH_UPDATE,,"
};
+char *r11[] = {
+
"PUSH_UPDATE,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,push-continuation
2",
+
"PUSH_UPDATE,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,push-continuation
2",
+
"PUSH_UPDATE,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,push-continuation
2",
+
"PUSH_UPDATE,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,push-continuation
2",
+
"PUSH_UPDATE,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,push-continuation
1"
+};
+
+char *r12[] = {
+
"PUSH_UPDATE,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,,,,,,a,push-continuation
2",
+ "PUSH_UPDATE,abc,push-continuation 1"
+};
+
+char *r13[] = {
+
"PUSH_UPDATE,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,,,,,,a,"
+};
+
const char *msg0 = "redirect-gateway local,route 192.168.1.0 255.255.255.0";
const char *msg1 = "-dhcp-option,blablalalalalalalalalalalalalf,
lalalalalalalalalalalalalalaf,"
@@ -365,6 +391,16 @@
"daisy damage damp dance danger daring dash daughter dawn
day deal debate debris decade december decide decline"
"decorate decrease deer defense define defy degree delay
deliver demand demise denial";
+const char *msg11 =
"a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,"
+
"a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,"
+
"a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,"
+
"a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,"
+
"a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a";
+
+const char *msg12 =
"a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,,,,,,a,abc";
+
+const char *msg13 =
"a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,,,,,,a,";
+
#define PUSH_BUNDLE_SIZE_TEST 184
static void
@@ -476,6 +512,36 @@
assert_int_equal(send_push_update(m, &cid, msg10, UPT_BY_CID,
PUSH_BUNDLE_SIZE_TEST), -EINVAL);
}
+static void
+test_send_push_msg11(void **state)
+{
+ i = 0;
+ res = r11;
+ struct multi_context *m = *state;
+ const unsigned long cid = 0;
+ assert_int_equal(send_push_update(m, &cid, msg11, UPT_BY_CID,
PUSH_BUNDLE_SIZE_TEST), 1);
+}
+
+static void
+test_send_push_msg12(void **state)
+{
+ i = 0;
+ res = r12;
+ struct multi_context *m = *state;
+ const unsigned long cid = 0;
+ assert_int_equal(send_push_update(m, &cid, msg12, UPT_BY_CID,
PUSH_BUNDLE_SIZE_TEST), 1);
+}
+
+static void
+test_send_push_msg13(void **state)
+{
+ i = 0;
+ res = r13;
+ struct multi_context *m = *state;
+ const unsigned long cid = 0;
+ assert_int_equal(send_push_update(m, &cid, msg13, UPT_BY_CID,
PUSH_BUNDLE_SIZE_TEST), 1);
+}
+
#undef PUSH_BUNDLE_SIZE_TEST
static int
@@ -545,7 +611,10 @@
cmocka_unit_test_setup_teardown(test_send_push_msg7, setup2,
teardown2),
cmocka_unit_test_setup_teardown(test_send_push_msg8, setup2,
teardown2),
cmocka_unit_test_setup_teardown(test_send_push_msg9, setup2,
teardown2),
- cmocka_unit_test_setup_teardown(test_send_push_msg10, setup2,
teardown2)
+ cmocka_unit_test_setup_teardown(test_send_push_msg10, setup2,
teardown2),
+ cmocka_unit_test_setup_teardown(test_send_push_msg11, setup2,
teardown2),
+ cmocka_unit_test_setup_teardown(test_send_push_msg12, setup2,
teardown2),
+ cmocka_unit_test_setup_teardown(test_send_push_msg13, setup2,
teardown2)
#endif
};
--
To view, visit http://gerrit.openvpn.net/c/openvpn/+/1316?usp=email
To unsubscribe, or for help writing mail filters, visit
http://gerrit.openvpn.net/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: openvpn
Gerrit-Branch: master
Gerrit-Change-Id: Idba419681fe3ccc4e6e2f6ce7592332dcff62cd9
Gerrit-Change-Number: 1316
Gerrit-PatchSet: 1
Gerrit-Owner: mrbff <[email protected]>
Gerrit-Reviewer: flichtenheld <[email protected]>
Gerrit-Reviewer: plaisthos <[email protected]>
Gerrit-CC: openvpn-devel <[email protected]>
Gerrit-Attention: plaisthos <[email protected]>
Gerrit-Attention: flichtenheld <[email protected]>
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel