From 486f7f9728ab7009770f1a40c7e49bafc20723a2 Mon Sep 17 00:00:00 2001 From: adamdunkels Date: Sun, 28 Feb 2010 08:25:36 +0000 Subject: [PATCH] Rewrite of the Sky shell collect test. The new test is better equipped to handle reordered packets - unlike the previous test, the new test counts all incoming packets in the data stream, even those that are significantly reordered. The new test also shows the received packets and their hop counts in a much more readable fashion. --- .../cooja/contiki_tests/sky_shell_collect.csc | 267 ++++++++---------- 1 file changed, 118 insertions(+), 149 deletions(-) diff --git a/tools/cooja/contiki_tests/sky_shell_collect.csc b/tools/cooja/contiki_tests/sky_shell_collect.csc index e1a6117bd..bcf2c0ea0 100644 --- a/tools/cooja/contiki_tests/sky_shell_collect.csc +++ b/tools/cooja/contiki_tests/sky_shell_collect.csc @@ -24,8 +24,7 @@ sky1 Sky Mote Type #1 [CONTIKI_DIR]/examples/sky-shell/sky-shell.c - make clean -make sky-shell.sky TARGET=sky + make sky-shell.sky TARGET=sky [CONTIKI_DIR]/examples/sky-shell/sky-shell.sky se.sics.cooja.interfaces.Position se.sics.cooja.interfaces.IPAddress @@ -39,12 +38,11 @@ make sky-shell.sky TARGET=sky se.sics.cooja.mspmote.interfaces.SkyLED - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 87.29845932913939 - 60.286214311723164 + 69.8193406818502 + 86.08116624448307 0.0 @@ -54,12 +52,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 94.30809966340686 - 22.50388779326399 + 23.73597351424919 + 23.64085389583863 0.0 @@ -69,12 +66,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 82.40423567500785 - 39.56979106929553 + 96.89503278354498 + 61.516110156918224 0.0 @@ -84,12 +80,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 26.185019854469438 - 4.800834369523899 + 7.611970631754317 + 50.863062569941086 0.0 @@ -99,12 +94,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 1.9530156130507015 - 78.3175061800706 + 97.77577457011573 + 36.50885983165134 0.0 @@ -114,12 +108,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 48.35216700543414 - 80.36988713780997 + 81.84280607291373 + 12.262433268451778 0.0 @@ -129,12 +122,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 24.825985087266833 - 74.27809432062487 + 48.76918142113213 + 76.28996665071358 0.0 @@ -144,12 +136,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 8.356165164293616 - 94.33967355724187 + 10.516199800941727 + 71.39959931668729 0.0 @@ -159,12 +150,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 45.11740613004886 - 31.7059041432301 + 69.48672858021564 + 2.274435761561955 0.0 @@ -174,12 +164,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 68.9908548386292 - 55.01991960639596 + 84.25868612469665 + 32.943146693468975 0.0 @@ -189,12 +178,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 13.181122543889046 - 55.9636533130127 + 13.670969901144792 + 63.99238378992226 0.0 @@ -204,12 +192,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 2.1749985906538427 - 78.39666095789707 + 72.51554571631638 + 47.00560695436694 0.0 @@ -219,12 +206,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 37.79795217518357 - 7.164284163506062 + 9.789480819347663 + 73.70566372866651 0.0 @@ -234,12 +220,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 64.4595177394984 - 72.115414337433 + 32.19085060633389 + 72.59300816076136 0.0 @@ -249,12 +234,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 81.85663737096085 - 89.31412706434035 + 80.2677099635723 + 98.0702168139253 0.0 @@ -264,12 +248,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 44.74952276297882 - 18.78566116347574 + 9.946705912815235 + 52.10151176834845 0.0 @@ -279,12 +262,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 96.11333426285873 - 90.64560410751824 + 2.43737538721972 + 56.151002617425625 0.0 @@ -294,12 +276,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 21.651464136783527 - 7.1381043251259495 + 27.435525284930186 + 61.81996286556931 0.0 @@ -309,12 +290,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 83.6006916200628 - 26.97170140682981 + 70.60927462351833 + 98.32577014155726 0.0 @@ -324,12 +304,11 @@ make sky-shell.sky TARGET=sky sky1 - se.sics.cooja.mspmote.SkyMote se.sics.cooja.interfaces.Position - 1.3446070721664705 - 7.340373220385176 + 43.3203771155477 + 11.948622865702085 0.0 @@ -339,18 +318,6 @@ make sky-shell.sky TARGET=sky sky1 - - se.sics.cooja.plugins.LogListener - - - - 690 - 2 - 207 - 327 - 24 - false - se.sics.cooja.plugins.ScriptRunner @@ -366,43 +333,21 @@ print_stats() total_dups + " dups, " + (total_dups / nrNodes) + " dups/node, " + (total_hops / total_received) + " hops/message\n"); - log.log("Seqnos: "); + log.log("Received:\n"); for(i = 1; i <= nrNodes; i++) { - log.log(seqnos[i] + " "); + log.log("Node " + i + " "); + if(i == sink) { + log.log("sink\n"); + } else { + log.log("received: " + received[i] + " hops: " + hops[i] + "\n"); + } } - log.log("\n"); - log.log("Lost: "); - for(i = 1; i <= nrNodes; i++) { - log.log(lost[i] + " "); - } - log.log("\n"); - log.log("Dups: "); - for(i = 1; i <= nrNodes; i++) { - log.log(dups[i] + " "); - } - log.log("\n"); - log.log("Reorder: "); - for(i = 1; i <= nrNodes; i++) { - log.log(reorder[i] + " "); - } - log.log("\n"); - log.log("Hops: "); - for(i = 1; i <= nrNodes; i++) { - log.log(hops[i] + " "); - } - log.log("\n"); - log.log("Received: "); - for(i = 1; i <= nrNodes; i++) { - log.log(count[i] + " "); - } - log.log("\n"); log.log("Stats: cpu " + 100 * total_cpu / (total_cpu + total_lpm) + "% lpm " + 100 * total_lpm / (total_cpu + total_lpm) + "% rx " + 100 * total_listen / (total_cpu + total_lpm) + "% tx " + 100 * total_transmit / (total_cpu + total_lpm) + "% average latency " + total_latency / (4096 * total_received) + " ms \n"); - } TIMEOUT(500000); @@ -410,12 +355,8 @@ TIMEOUT(500000); /* Conf. */ booted = new Array(); -count = new Array(); +received = new Array(); hops = new Array(); -seqnos = new Array(); -lost = new Array(); -dups = new Array(); -reorder = new Array(); nrNodes = 20; total_received = 0; total_lost = 0; @@ -430,17 +371,13 @@ total_latency = 0; nodes_starting = true; for(i = 1; i <= nrNodes; i++) { booted[i] = false; - count[i] = 0; - hops[i] = 0; - seqnos[i] = -1; - lost[i] = 0; - dups[i] = 0; - reorder[i] = 0; + received[i] = "__________"; + hops[i] = received[i]; } /* Wait until all nodes have started */ while(nodes_starting) { - YIELD_THEN_WAIT_UNTIL(msg.startsWith('Starting')); + YIELD_THEN_WAIT_UNTIL(msg.startsWith('Star')); log.log("Node " + id + " booted\n"); booted[id] = true; @@ -511,49 +448,46 @@ while(true) { total_latency += latency; source = node_id; - count[source]++; - hops[source] = hop; - seqno_gap = seqno - seqnos[source]; - seqnos[source] = seqno; + dups = received[source].substr(seqno, 1); + if(dups == "_") { + dups = 1; + } else if(dups < 9) { + dups++; + } + received[source] = received[source].substr(0, seqno) + dups + + received[source].substr(seqno + 1, 10 - seqno); + + if(hop > 9) { + hop = "+"; + } + hops[source] = hops[source].substr(0, seqno) + hop + + hops[source].substr(seqno + 1, 10 - seqno); total_received++; total_hops += hop; - if(seqno_gap >= 2) { - total_lost += seqno_gap - 1; - lost[source] += seqno_gap - 1; - total_received--; - total_hops -= hop; - count[source]--; - } else if(seqno_gap == 0) { - total_dups += 1; - dups[source] += 1; - total_received--; - total_hops -= hop; - count[source]--; - } else if(seqno_gap == -1) { - total_reorder += 1; - reorder[source] += 1; - } print_stats(); } /* Signal OK if all nodes have reported 10 messages. */ num_reported = 0; for(i = 1; i <= nrNodes; i++) { - if(i != sink && count[i] == 10) { - num_reported++; - } + if(i != sink) { + if(!isNaN(received[i])) { + num_reported++; + } + } } + if(num_reported == nrNodes - 1) { - print_stats(); - log.testOK(); - } + print_stats(); + log.testOK(); + } } true 602 - 3 - 413 + 0 + 508 257 0 false @@ -561,7 +495,7 @@ while(true) { se.sics.cooja.plugins.SimControl 259 - 1 + 5 200 4 0 @@ -572,7 +506,30 @@ while(true) { se.sics.cooja.plugins.skins.IDVisualizerSkin se.sics.cooja.plugins.skins.UDGMVisualizerSkin - 2.3981827551130066 0.0 0.0 2.3981827551130066 8.139022870763759 0.1214717784430076 + 2.2620479837704246 0.0 0.0 2.2620479837704246 11.65652309586307 5.218753534979797 + + 260 + 3 + 296 + 0 + 197 + false + + + se.sics.cooja.plugins.SimControl + 259 + 6 + 200 + 4 + 0 + false + + + se.sics.cooja.plugins.Visualizer + + se.sics.cooja.plugins.skins.IDVisualizerSkin + se.sics.cooja.plugins.skins.UDGMVisualizerSkin + 3.1695371670945955 0.0 0.0 3.1695371670945955 -64.4008177427222 -14.683213177997528 260 4 @@ -581,6 +538,18 @@ while(true) { 197 false + + se.sics.cooja.plugins.LogListener + + + + 720 + 2 + 486 + 695 + 2 + false + se.sics.cooja.plugins.TimeLine @@ -610,11 +579,11 @@ while(true) { 118 9 - 1024 - 0 - 438 + 1440 + 1 + 425 0 - 260 + 405 false