mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #8796 from artokin/nanostack_mac_tester_sync
nanostack-mac-tester sync with v1.0.0pull/8944/head
commit
b83cdb303e
|
@ -477,6 +477,7 @@ void mac_data_confirm_handler(const mac_api_t *api, const mcps_data_conf_t *data
|
||||||
if (data->status == expected_statuses.data_conf) {
|
if (data->status == expected_statuses.data_conf) {
|
||||||
cmd_ready(CMDLINE_RETCODE_SUCCESS);
|
cmd_ready(CMDLINE_RETCODE_SUCCESS);
|
||||||
} else {
|
} else {
|
||||||
|
cmd_printf("CMD failed, status: %hhu (%s)\n", data->status, mlme_status_string(data->status));
|
||||||
cmd_ready(CMDLINE_RETCODE_FAIL);
|
cmd_ready(CMDLINE_RETCODE_FAIL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -501,12 +502,14 @@ void mac_data_indication_handler(const mac_api_t *api, const mcps_data_ind_t *da
|
||||||
}
|
}
|
||||||
if (data->msdu_ptr && expected_statuses.data_ind) {
|
if (data->msdu_ptr && expected_statuses.data_ind) {
|
||||||
if (data->msduLength != expected_statuses.data_ind_len) {
|
if (data->msduLength != expected_statuses.data_ind_len) {
|
||||||
|
cmd_printf("Bad recv length %d != %d!\n", data->msduLength, expected_statuses.data_ind_len);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (strncmp((const char *)data->msdu_ptr, (const char *)expected_statuses.data_ind, expected_statuses.data_ind_len) == 0) {
|
if (strncmp((const char *)data->msdu_ptr, (const char *)expected_statuses.data_ind, expected_statuses.data_ind_len) == 0) {
|
||||||
++data_count;
|
++data_count;
|
||||||
|
cmd_printf("Data count %d\n", data_count);
|
||||||
} else {
|
} else {
|
||||||
tr_warn("Received unexpected data!");
|
cmd_printf("Received unexpected data!\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -521,6 +524,7 @@ void mac_purge_confirm_handler(const mac_api_t *api, mcps_purge_conf_t *data)
|
||||||
if (data->status == expected_statuses.purge_conf) {
|
if (data->status == expected_statuses.purge_conf) {
|
||||||
cmd_ready(CMDLINE_RETCODE_SUCCESS);
|
cmd_ready(CMDLINE_RETCODE_SUCCESS);
|
||||||
} else {
|
} else {
|
||||||
|
cmd_printf("CMD failed, status: %hhu (%s)\n", data->status, mlme_status_string(data->status));
|
||||||
cmd_ready(CMDLINE_RETCODE_FAIL);
|
cmd_ready(CMDLINE_RETCODE_FAIL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -547,6 +551,7 @@ void mac_mlme_confirm_handler(const mac_api_t *api, mlme_primitive id, const voi
|
||||||
if (get_data->status == expected_statuses.get_conf) {
|
if (get_data->status == expected_statuses.get_conf) {
|
||||||
cmd_ready(CMDLINE_RETCODE_SUCCESS);
|
cmd_ready(CMDLINE_RETCODE_SUCCESS);
|
||||||
} else {
|
} else {
|
||||||
|
cmd_printf("CMD failed, status: %hhu (%s)\n", get_data->status, mlme_status_string(get_data->status));
|
||||||
cmd_ready(CMDLINE_RETCODE_FAIL);
|
cmd_ready(CMDLINE_RETCODE_FAIL);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -585,6 +590,7 @@ void mac_mlme_confirm_handler(const mac_api_t *api, mlme_primitive id, const voi
|
||||||
if (scan_data->status == expected_statuses.scan_conf || scan_data->status == MLME_LIMIT_REACHED) {
|
if (scan_data->status == expected_statuses.scan_conf || scan_data->status == MLME_LIMIT_REACHED) {
|
||||||
cmd_ready(CMDLINE_RETCODE_SUCCESS);
|
cmd_ready(CMDLINE_RETCODE_SUCCESS);
|
||||||
} else {
|
} else {
|
||||||
|
cmd_printf("CMD failed, status: %hhu (%s)\n", scan_data->status, mlme_status_string(scan_data->status));
|
||||||
cmd_ready(CMDLINE_RETCODE_FAIL);
|
cmd_ready(CMDLINE_RETCODE_FAIL);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -599,24 +605,28 @@ void mac_mlme_confirm_handler(const mac_api_t *api, mlme_primitive id, const voi
|
||||||
mlme_poll_conf_t *poll_data = (mlme_poll_conf_t *)data;
|
mlme_poll_conf_t *poll_data = (mlme_poll_conf_t *)data;
|
||||||
cmd_printf("MLME-POLL.confirm\n");
|
cmd_printf("MLME-POLL.confirm\n");
|
||||||
if (!silent_mode) {
|
if (!silent_mode) {
|
||||||
cmd_printf("status: %hhu (%s)\n", poll_data->status, mlme_status_string(poll_data->status));
|
cmd_printf("status: %hhu (%s)\n", poll_data->status, mlme_status_string(poll_data->status));
|
||||||
cmd_printf("data_count %u\n", data_count);
|
cmd_printf("expected status: %hhu (%s)\n", expected_statuses.poll_conf, mlme_status_string(expected_statuses.poll_conf));
|
||||||
|
cmd_printf("data_count %u\n", data_count);
|
||||||
}
|
}
|
||||||
if (expected_statuses.poll_conf == MLME_SUCCESS) {
|
if (expected_statuses.poll_conf == MLME_SUCCESS) {
|
||||||
if (data_count == 1 && poll_data->status == MLME_SUCCESS) {
|
if (data_count == 1 && poll_data->status == MLME_SUCCESS) {
|
||||||
cmd_ready(CMDLINE_RETCODE_SUCCESS);
|
cmd_ready(CMDLINE_RETCODE_SUCCESS);
|
||||||
} else {
|
} else {
|
||||||
|
cmd_printf("CMD failed, data_count = %u, status:%hhu\n", data_count, poll_data->status);
|
||||||
cmd_ready(CMDLINE_RETCODE_FAIL);
|
cmd_ready(CMDLINE_RETCODE_FAIL);
|
||||||
}
|
}
|
||||||
} else if (expected_statuses.poll_conf == poll_data->status) {
|
} else if (expected_statuses.poll_conf == poll_data->status) {
|
||||||
cmd_ready(CMDLINE_RETCODE_SUCCESS);
|
cmd_ready(CMDLINE_RETCODE_SUCCESS);
|
||||||
} else {
|
} else {
|
||||||
|
cmd_printf("CMD failed, data_count = %u, status:%hhu, expected ret:%hhu\n", data_count, poll_data->status, expected_statuses.poll_conf);
|
||||||
cmd_ready(CMDLINE_RETCODE_FAIL);
|
cmd_ready(CMDLINE_RETCODE_FAIL);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
cmd_ready(CMDLINE_RETCODE_COMMAND_NOT_IMPLEMENTED);
|
cmd_ready(CMDLINE_RETCODE_COMMAND_NOT_IMPLEMENTED);
|
||||||
|
cmd_printf("CMD failed, not implemented\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#include "mac_mcps.h"
|
#include "mac_mcps.h"
|
||||||
#include "mac_common_defines.h"
|
#include "mac_common_defines.h"
|
||||||
#include "mac_filter_api.h"
|
#include "mac_filter_api.h"
|
||||||
#include "util.h"
|
#include "mac_tester_util.h"
|
||||||
|
|
||||||
#define LOOKUP_DESCRIPTOR_TABLE_SIZE 2
|
#define LOOKUP_DESCRIPTOR_TABLE_SIZE 2
|
||||||
#define DEVICE_DESCRIPTOR_TABLE_SIZE 2
|
#define DEVICE_DESCRIPTOR_TABLE_SIZE 2
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
#include "util.h"
|
#include "mac_tester_util.h"
|
||||||
|
|
||||||
int string_to_bytes(const char *str, uint8_t *buf, int bytes)
|
int string_to_bytes(const char *str, uint8_t *buf, int bytes)
|
||||||
{
|
{
|
|
@ -18,12 +18,13 @@ limitations under the License.
|
||||||
import threading
|
import threading
|
||||||
import os,sys
|
import os,sys
|
||||||
from icetea_lib.bench import Bench
|
from icetea_lib.bench import Bench
|
||||||
|
from icetea_lib.TestStepError import TestStepFail
|
||||||
|
|
||||||
class Testcase(Bench):
|
class Testcase(Bench):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
Bench.__init__(self, name = "ED_scan",
|
Bench.__init__(self, name = "ED_scan",
|
||||||
title = "ED scan test",
|
title = "ED scan test",
|
||||||
status = "development",
|
status = "released",
|
||||||
type = "smoke",
|
type = "smoke",
|
||||||
subtype = "",
|
subtype = "",
|
||||||
execution = {
|
execution = {
|
||||||
|
@ -54,9 +55,6 @@ class Testcase(Bench):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.channel = 11
|
self.channel = 11
|
||||||
self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01")
|
|
||||||
self.command("Second", "addr --64-bit 01:02:03:00:00:00:00:02")
|
|
||||||
self.command("Third", "addr --64-bit 01:02:03:00:00:00:00:03")
|
|
||||||
|
|
||||||
def spam_channel(self, event):
|
def spam_channel(self, event):
|
||||||
while not event.wait(0.1):
|
while not event.wait(0.1):
|
||||||
|
@ -71,8 +69,16 @@ class Testcase(Bench):
|
||||||
res = res | ( 1 << ch)
|
res = res | ( 1 << ch)
|
||||||
return hex(res)
|
return hex(res)
|
||||||
|
|
||||||
def case(self):
|
def do_test_iteration(self):
|
||||||
self.lock_th = threading.Lock()
|
self.lock_th = threading.Lock()
|
||||||
|
self.command("First", "mlme-reset")
|
||||||
|
self.command("Second", "mlme-reset")
|
||||||
|
self.command("Third", "mlme-reset")
|
||||||
|
|
||||||
|
self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01")
|
||||||
|
self.command("Second", "addr --64-bit 01:02:03:00:00:00:00:02")
|
||||||
|
self.command("Third", "addr --64-bit 01:02:03:00:00:00:00:03")
|
||||||
|
|
||||||
self.payload = "01234567890123456789012345678901234567890123456789"
|
self.payload = "01234567890123456789012345678901234567890123456789"
|
||||||
|
|
||||||
# Start PAN coordinator
|
# Start PAN coordinator
|
||||||
|
@ -105,6 +111,20 @@ class Testcase(Bench):
|
||||||
# Energy detection analysis
|
# Energy detection analysis
|
||||||
self.command("Second", "analyze-ed --channel {} --above 100".format(self.channel))
|
self.command("Second", "analyze-ed --channel {} --above 100".format(self.channel))
|
||||||
|
|
||||||
|
def case(self):
|
||||||
|
# Try tests few times because of potential RF failures
|
||||||
|
loop = 0
|
||||||
|
while loop < 5:
|
||||||
|
try:
|
||||||
|
self.do_test_iteration()
|
||||||
|
break
|
||||||
|
except TestStepFail:
|
||||||
|
self.logger.info("Warning, iteration failed #" + str(loop+1))
|
||||||
|
loop = loop + 1
|
||||||
|
self.delay(5)
|
||||||
|
else:
|
||||||
|
raise TestStepFail("Too many failed iterations!")
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.command("First", "silent-mode off")
|
self.command("First", "silent-mode off")
|
||||||
self.command("Third", "silent-mode off")
|
self.command("Third", "silent-mode off")
|
||||||
|
@ -112,3 +132,4 @@ class Testcase(Bench):
|
||||||
self.th.join()
|
self.th.join()
|
||||||
del self.th
|
del self.th
|
||||||
self.reset_dut()
|
self.reset_dut()
|
||||||
|
|
||||||
|
|
|
@ -17,12 +17,13 @@ limitations under the License.
|
||||||
|
|
||||||
import os,sys
|
import os,sys
|
||||||
from icetea_lib.bench import Bench
|
from icetea_lib.bench import Bench
|
||||||
|
from icetea_lib.TestStepError import TestStepFail
|
||||||
|
|
||||||
class Testcase(Bench):
|
class Testcase(Bench):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
Bench.__init__(self, name = "address_read_and_write",
|
Bench.__init__(self, name = "address_read_and_write",
|
||||||
title = "MAC address and PAN id read/write test",
|
title = "MAC address and PAN id read/write test",
|
||||||
status = "development",
|
status = "released",
|
||||||
type = "smoke",
|
type = "smoke",
|
||||||
subtype = "",
|
subtype = "",
|
||||||
execution = {
|
execution = {
|
||||||
|
@ -52,7 +53,8 @@ class Testcase(Bench):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def case(self):
|
def do_test_iteration(self):
|
||||||
|
self.command("First", "mlme-reset")
|
||||||
self.command("First", "addr")
|
self.command("First", "addr")
|
||||||
self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01")
|
self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01")
|
||||||
self.command("First", "addr --16-bit 0xABCD")
|
self.command("First", "addr --16-bit 0xABCD")
|
||||||
|
@ -61,5 +63,20 @@ class Testcase(Bench):
|
||||||
self.command("First", "addr")
|
self.command("First", "addr")
|
||||||
self.verify_trace(1, "MAC64: 01:02:03:00:00:00:00:01")
|
self.verify_trace(1, "MAC64: 01:02:03:00:00:00:00:01")
|
||||||
|
|
||||||
|
def case(self):
|
||||||
|
# Try tests few times because of potential RF failures
|
||||||
|
loop = 0
|
||||||
|
while loop < 5:
|
||||||
|
try:
|
||||||
|
self.do_test_iteration()
|
||||||
|
break
|
||||||
|
except TestStepFail:
|
||||||
|
self.logger.info("Warning, iteration failed #" + str(loop+1))
|
||||||
|
loop = loop + 1
|
||||||
|
self.delay(5)
|
||||||
|
else:
|
||||||
|
raise TestStepFail("Too many failed iterations!")
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.reset_dut()
|
self.reset_dut()
|
||||||
|
|
||||||
|
|
|
@ -17,12 +17,13 @@ limitations under the License.
|
||||||
|
|
||||||
import os,sys
|
import os,sys
|
||||||
from icetea_lib.bench import Bench
|
from icetea_lib.bench import Bench
|
||||||
|
from icetea_lib.TestStepError import TestStepFail
|
||||||
|
|
||||||
class Testcase(Bench):
|
class Testcase(Bench):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
Bench.__init__(self, name = "create_and_join_PAN",
|
Bench.__init__(self, name = "create_and_join_PAN",
|
||||||
title = "Create a PAN and have a device join it",
|
title = "Create a PAN and have a device join it",
|
||||||
status = "development",
|
status = "released",
|
||||||
type = "smoke",
|
type = "smoke",
|
||||||
subtype = "",
|
subtype = "",
|
||||||
execution = {
|
execution = {
|
||||||
|
@ -60,12 +61,16 @@ class Testcase(Bench):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.channel = 11
|
self.channel = 11
|
||||||
|
|
||||||
def case(self):
|
def do_test_iteration(self):
|
||||||
|
self.command("First", "mlme-reset")
|
||||||
|
self.command("Second", "mlme-reset")
|
||||||
|
self.command("Third", "mlme-reset")
|
||||||
|
|
||||||
# Beacon payload
|
# Beacon payload
|
||||||
self.command("First", "mlme-set --attr 0x45 --value_ascii mac-tester --value_size 10")
|
self.command("First", "mlme-set --attr 0x45 --value_ascii mac-tester --value_size 10")
|
||||||
# Beacon payload length
|
# Beacon payload length
|
||||||
self.command("First", "mlme-set --attr 0x46 --value_uint8 10 --value_size 1")
|
self.command("First", "mlme-set --attr 0x46 --value_uint8 10 --value_size 1")
|
||||||
|
|
||||||
self.command("Second", "mlme-set --attr 0x45 --value_ascii second-mac-tester --value_size 17")
|
self.command("Second", "mlme-set --attr 0x45 --value_ascii second-mac-tester --value_size 17")
|
||||||
self.command("Second", "mlme-set --attr 0x46 --value_uint8 17 --value_size 1")
|
self.command("Second", "mlme-set --attr 0x46 --value_uint8 17 --value_size 1")
|
||||||
|
|
||||||
|
@ -84,5 +89,19 @@ class Testcase(Bench):
|
||||||
self.command("Third", "find-beacon --data mac-tester")
|
self.command("Third", "find-beacon --data mac-tester")
|
||||||
self.command("Third", "find-beacon --data second-mac-tester")
|
self.command("Third", "find-beacon --data second-mac-tester")
|
||||||
|
|
||||||
|
def case(self):
|
||||||
|
# Try tests few times because of potential RF failures
|
||||||
|
loop = 0
|
||||||
|
while loop < 5:
|
||||||
|
try:
|
||||||
|
self.do_test_iteration()
|
||||||
|
break
|
||||||
|
except TestStepFail:
|
||||||
|
self.logger.info("Warning, iteration failed #" + str(loop+1))
|
||||||
|
loop = loop + 1
|
||||||
|
self.delay(5)
|
||||||
|
else:
|
||||||
|
raise TestStepFail("Too many failed iterations!")
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.reset_dut()
|
self.reset_dut()
|
||||||
|
|
|
@ -17,12 +17,13 @@ limitations under the License.
|
||||||
|
|
||||||
import os,sys
|
import os,sys
|
||||||
from icetea_lib.bench import Bench
|
from icetea_lib.bench import Bench
|
||||||
|
from icetea_lib.TestStepError import TestStepFail
|
||||||
|
|
||||||
class Testcase(Bench):
|
class Testcase(Bench):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
Bench.__init__(self, name = "send_data",
|
Bench.__init__(self, name = "send_data",
|
||||||
title = "Simple data transmission test",
|
title = "Simple data transmission test",
|
||||||
status = "development",
|
status = "released",
|
||||||
type = "smoke",
|
type = "smoke",
|
||||||
subtype = "",
|
subtype = "",
|
||||||
execution = {
|
execution = {
|
||||||
|
@ -52,10 +53,14 @@ class Testcase(Bench):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.channel = 11
|
self.channel = 11
|
||||||
|
|
||||||
|
def do_test_iteration(self):
|
||||||
|
self.command("First", "mlme-reset")
|
||||||
|
self.command("Second", "mlme-reset")
|
||||||
|
|
||||||
self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01")
|
self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01")
|
||||||
self.command("Second", "addr --64-bit 01:02:03:00:00:00:00:02")
|
self.command("Second", "addr --64-bit 01:02:03:00:00:00:00:02")
|
||||||
|
|
||||||
def case(self):
|
|
||||||
# Start PAN coordinator
|
# Start PAN coordinator
|
||||||
self.command("First", "start --pan_coordinator true --logical_channel {}".format(self.channel))
|
self.command("First", "start --pan_coordinator true --logical_channel {}".format(self.channel))
|
||||||
# Start PAN beacon
|
# Start PAN beacon
|
||||||
|
@ -65,5 +70,20 @@ class Testcase(Bench):
|
||||||
self.command("First", "data --dst_addr 01:02:03:00:00:00:00:02 --msdu_length 5 --msdu abcde")
|
self.command("First", "data --dst_addr 01:02:03:00:00:00:00:02 --msdu_length 5 --msdu abcde")
|
||||||
self.command("Second", "data --dst_addr 01:02:03:00:00:00:00:01 --msdu_length 5 --msdu 12345")
|
self.command("Second", "data --dst_addr 01:02:03:00:00:00:00:01 --msdu_length 5 --msdu 12345")
|
||||||
|
|
||||||
|
def case(self):
|
||||||
|
# Try tests few times because of potential RF failures
|
||||||
|
loop = 0
|
||||||
|
while loop < 5:
|
||||||
|
try:
|
||||||
|
self.do_test_iteration()
|
||||||
|
break
|
||||||
|
except TestStepFail:
|
||||||
|
self.logger.info("Warning, iteration failed #" + str(loop+1))
|
||||||
|
loop = loop + 1
|
||||||
|
self.delay(5)
|
||||||
|
else:
|
||||||
|
raise TestStepFail("Too many failed iterations!")
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.reset_dut()
|
self.reset_dut()
|
||||||
|
|
||||||
|
|
|
@ -17,12 +17,13 @@ limitations under the License.
|
||||||
|
|
||||||
import os,sys
|
import os,sys
|
||||||
from icetea_lib.bench import Bench
|
from icetea_lib.bench import Bench
|
||||||
|
from icetea_lib.TestStepError import TestStepFail
|
||||||
|
|
||||||
class Testcase(Bench):
|
class Testcase(Bench):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
Bench.__init__(self, name = "send_data_indirect",
|
Bench.__init__(self, name = "send_data_indirect",
|
||||||
title = "Indirect data transmission test",
|
title = "Indirect data transmission test",
|
||||||
status = "development",
|
status = "released",
|
||||||
type = "smoke",
|
type = "smoke",
|
||||||
subtype = "",
|
subtype = "",
|
||||||
execution = {
|
execution = {
|
||||||
|
@ -53,11 +54,17 @@ class Testcase(Bench):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.channel = 11
|
self.channel = 11
|
||||||
|
|
||||||
|
def do_test_iteration(self):
|
||||||
|
self.channel = 11
|
||||||
|
self.command("First", "mlme-reset")
|
||||||
|
self.command("Second", "mlme-reset")
|
||||||
|
self.command("Third", "mlme-reset")
|
||||||
|
|
||||||
self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01")
|
self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01")
|
||||||
self.command("Second", "addr --64-bit 01:02:03:00:00:00:00:02")
|
self.command("Second", "addr --64-bit 01:02:03:00:00:00:00:02")
|
||||||
self.command("Third", "addr --64-bit 01:02:03:00:00:00:00:03")
|
self.command("Third", "addr --64-bit 01:02:03:00:00:00:00:03")
|
||||||
|
|
||||||
def case(self):
|
|
||||||
# Start PAN coordinator
|
# Start PAN coordinator
|
||||||
self.command("First", "start --pan_coordinator true --logical_channel {}".format(self.channel))
|
self.command("First", "start --pan_coordinator true --logical_channel {}".format(self.channel))
|
||||||
# Start PAN beacon
|
# Start PAN beacon
|
||||||
|
@ -107,5 +114,21 @@ class Testcase(Bench):
|
||||||
self.command("Third", "poll --coord_address 01:02:03:00:00:00:00:01")
|
self.command("Third", "poll --coord_address 01:02:03:00:00:00:00:01")
|
||||||
self.command("*", "silent-mode off")
|
self.command("*", "silent-mode off")
|
||||||
|
|
||||||
|
def case(self):
|
||||||
|
# Try tests few times because of potential RF failures
|
||||||
|
loop = 0
|
||||||
|
while loop < 5:
|
||||||
|
try:
|
||||||
|
self.do_test_iteration()
|
||||||
|
break
|
||||||
|
except TestStepFail:
|
||||||
|
self.logger.info("Warning, iteration failed #" + str(loop+1))
|
||||||
|
loop = loop + 1
|
||||||
|
self.delay(5)
|
||||||
|
else:
|
||||||
|
raise TestStepFail("Too many failed iterations!")
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
|
self.command("*", "silent-mode off")
|
||||||
self.reset_dut()
|
self.reset_dut()
|
||||||
|
|
||||||
|
|
|
@ -17,12 +17,13 @@ limitations under the License.
|
||||||
|
|
||||||
import os,sys
|
import os,sys
|
||||||
from icetea_lib.bench import Bench
|
from icetea_lib.bench import Bench
|
||||||
|
from icetea_lib.TestStepError import TestStepFail
|
||||||
|
|
||||||
class Testcase(Bench):
|
class Testcase(Bench):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
Bench.__init__(self, name = "send_large_payloads",
|
Bench.__init__(self, name = "send_large_payloads",
|
||||||
title = "Data transmission test with large packets",
|
title = "Data transmission test with large packets",
|
||||||
status = "development",
|
status = "released",
|
||||||
type = "reliability",
|
type = "reliability",
|
||||||
subtype = "",
|
subtype = "",
|
||||||
execution = {
|
execution = {
|
||||||
|
@ -52,10 +53,14 @@ class Testcase(Bench):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.channel = 11
|
self.channel = 11
|
||||||
|
|
||||||
|
def do_test_iteration(self):
|
||||||
|
self.command("First", "mlme-reset")
|
||||||
|
self.command("Second", "mlme-reset")
|
||||||
|
|
||||||
self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01")
|
self.command("First", "addr --64-bit 01:02:03:00:00:00:00:01")
|
||||||
self.command("Second", "addr --64-bit 01:02:03:00:00:00:00:02")
|
self.command("Second", "addr --64-bit 01:02:03:00:00:00:00:02")
|
||||||
|
|
||||||
def case(self):
|
|
||||||
#104 characters, headers are 2+1+2+8+8+2=23 bytes, resulting in a packet size of 127 (max)
|
#104 characters, headers are 2+1+2+8+8+2=23 bytes, resulting in a packet size of 127 (max)
|
||||||
large_payload = "0123456789abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZZZZZZZZZ0123456789012345678901234567891234"
|
large_payload = "0123456789abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZZZZZZZZZ0123456789012345678901234567891234"
|
||||||
# Start PAN coordinator
|
# Start PAN coordinator
|
||||||
|
@ -83,5 +88,20 @@ class Testcase(Bench):
|
||||||
self.command("Second", "data")
|
self.command("Second", "data")
|
||||||
self.command("First", "wait")
|
self.command("First", "wait")
|
||||||
|
|
||||||
|
def case(self):
|
||||||
|
# Try tests few times because of potential RF failures
|
||||||
|
loop = 0
|
||||||
|
while loop < 5:
|
||||||
|
try:
|
||||||
|
self.do_test_iteration()
|
||||||
|
break
|
||||||
|
except TestStepFail:
|
||||||
|
self.logger.info("Warning, iteration failed #" + str(loop+1))
|
||||||
|
loop = loop + 1
|
||||||
|
self.delay(5)
|
||||||
|
else:
|
||||||
|
raise TestStepFail("Too many failed iterations!")
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.reset_dut()
|
self.reset_dut()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue