worked on wifi-scanner for linux

new time-grouping for vap grouper
adjusted test-cases
minor changes/fixes/improvements
This commit is contained in:
2017-10-11 14:00:24 +02:00
parent 628be72e1f
commit da477866c1
13 changed files with 649 additions and 223 deletions

View File

@@ -52,4 +52,35 @@ TEST(Timestamp, add) {
}
TEST(Timestamp, div) {
Timestamp ts1 = Timestamp::fromMS(1000);
ASSERT_EQ(100, (ts1/(size_t)10).ms());
}
TEST(Timestamp, minmax) {
Timestamp tsLow = std::numeric_limits<Timestamp>::lowest();
Timestamp tsMin = std::numeric_limits<Timestamp>::min();
Timestamp tsMax = std::numeric_limits<Timestamp>::max();
Timestamp ts0 = Timestamp::fromMS(0);
Timestamp tsNeg = Timestamp::fromMS(-99999999999999L);
Timestamp tsPos = Timestamp::fromMS(+99999999999999L);
ASSERT_EQ(tsMin, tsLow);
ASSERT_TRUE(tsMin < tsMax);
ASSERT_TRUE(tsMin < ts0);
ASSERT_TRUE(tsMin < tsNeg);
ASSERT_TRUE(tsMax > tsMin);
ASSERT_TRUE(tsMax > ts0);
ASSERT_TRUE(tsMax > tsPos);
}
#endif

View File

@@ -38,9 +38,9 @@ TEST(WiFiVAPGrouper, baseMAC) {
TEST(WiFiVAPGrouper, aggregation) {
VAPGrouper vgAvg(VAPGrouper::Mode::LAST_MAC_DIGIT_TO_ZERO, VAPGrouper::Aggregation::AVERAGE);
VAPGrouper vgMedian(VAPGrouper::Mode::LAST_MAC_DIGIT_TO_ZERO, VAPGrouper::Aggregation::MEDIAN);
VAPGrouper vgMax(VAPGrouper::Mode::LAST_MAC_DIGIT_TO_ZERO, VAPGrouper::Aggregation::MAXIMUM);
VAPGrouper vgAvg(VAPGrouper::Mode::LAST_MAC_DIGIT_TO_ZERO, VAPGrouper::Aggregation::AVERAGE, VAPGrouper::TimeAggregation::AVERAGE);
VAPGrouper vgMedian(VAPGrouper::Mode::LAST_MAC_DIGIT_TO_ZERO, VAPGrouper::Aggregation::MEDIAN, VAPGrouper::TimeAggregation::MINIMUM);
VAPGrouper vgMax(VAPGrouper::Mode::LAST_MAC_DIGIT_TO_ZERO, VAPGrouper::Aggregation::MAXIMUM, VAPGrouper::TimeAggregation::MAXIMUM);
WiFiMeasurements scan;
@@ -59,7 +59,7 @@ TEST(WiFiVAPGrouper, aggregation) {
scan.entries.push_back(WiFiMeasurement(vap20, -69, Timestamp::fromMS(22)));
scan.entries.push_back(WiFiMeasurement(vap21, -61, Timestamp::fromMS(25)));
scan.entries.push_back(WiFiMeasurement(vap22, -62, Timestamp::fromMS(23)));
scan.entries.push_back(WiFiMeasurement(vap22, -62, Timestamp::fromMS(21)));
scan.entries.push_back(WiFiMeasurement(vap23, -60, Timestamp::fromMS(20)));
const WiFiMeasurements gAvg = vgAvg.group(scan);
@@ -71,26 +71,73 @@ TEST(WiFiVAPGrouper, aggregation) {
ASSERT_EQ(2, gMedian.entries.size());
ASSERT_EQ(2, gMax.entries.size());
// correct average values?
// correct average rssi / average timestamp?
ASSERT_EQ(-72, gAvg.entries.back().getRSSI());
ASSERT_EQ(-63, gAvg.entries.front().getRSSI());
ASSERT_EQ(Timestamp::fromMS(11), gAvg.entries.back().getTimestamp());
ASSERT_EQ(Timestamp::fromMS(22), gAvg.entries.front().getTimestamp());
ASSERT_EQ(Timestamp::fromMS(12), gAvg.entries.back().getTimestamp()); // average ts
ASSERT_EQ(Timestamp::fromMS(22), gAvg.entries.front().getTimestamp()); // average ts
// correct median values?
// correct median rssi / min timestamp?
ASSERT_EQ(-71, gMedian.entries.back().getRSSI());
ASSERT_EQ(-61.5, gMedian.entries.front().getRSSI());
ASSERT_EQ(Timestamp::fromMS(11), gMedian.entries.back().getTimestamp());
ASSERT_EQ(Timestamp::fromMS(22), gMedian.entries.front().getTimestamp());
ASSERT_EQ(Timestamp::fromMS(11), gMedian.entries.back().getTimestamp()); // min ts
ASSERT_EQ(Timestamp::fromMS(20), gMedian.entries.front().getTimestamp()); // min ts
// correct max values?
// correct max rssi / max timestamp?
ASSERT_EQ(-70, gMax.entries.back().getRSSI());
ASSERT_EQ(-60, gMax.entries.front().getRSSI());
ASSERT_EQ(Timestamp::fromMS(11), gMax.entries.back().getTimestamp());
ASSERT_EQ(Timestamp::fromMS(22), gMax.entries.front().getTimestamp());
ASSERT_EQ(Timestamp::fromMS(13), gMax.entries.back().getTimestamp()); // max ts
ASSERT_EQ(Timestamp::fromMS(25), gMax.entries.front().getTimestamp()); // max ts
}
TEST(WiFiVAPGrouper, aggregationTS) {
VAPGrouper vgAvg(VAPGrouper::Mode::LAST_MAC_DIGIT_TO_ZERO, VAPGrouper::Aggregation::AVERAGE, VAPGrouper::TimeAggregation::AVERAGE);
VAPGrouper vgMedian(VAPGrouper::Mode::LAST_MAC_DIGIT_TO_ZERO, VAPGrouper::Aggregation::MEDIAN, VAPGrouper::TimeAggregation::MINIMUM);
VAPGrouper vgMax(VAPGrouper::Mode::LAST_MAC_DIGIT_TO_ZERO, VAPGrouper::Aggregation::MAXIMUM, VAPGrouper::TimeAggregation::MAXIMUM);
WiFiMeasurements scan;
const AccessPoint vap0("01:bb:cc:dd:11:a0");
const AccessPoint vap1("01:bb:cc:dd:11:a1");
const AccessPoint vap2("01:bb:cc:dd:11:a2");
const AccessPoint vap3("01:bb:cc:dd:11:a3");
const AccessPoint vap4("01:bb:cc:dd:11:a4");
const AccessPoint vap5("01:bb:cc:dd:11:a5");
const AccessPoint vap6("01:bb:cc:dd:11:a6");
const AccessPoint vap7("01:bb:cc:dd:11:a7");
const AccessPoint vap8("01:bb:cc:dd:11:a8");
Timestamp base = Timestamp::fromUnixTime();
scan.entries.push_back(WiFiMeasurement(vap0, -1, base+Timestamp::fromMS(1)));
scan.entries.push_back(WiFiMeasurement(vap1, -2, base+Timestamp::fromMS(2)));
scan.entries.push_back(WiFiMeasurement(vap2, -3, base+Timestamp::fromMS(3)));
scan.entries.push_back(WiFiMeasurement(vap3, -4, base+Timestamp::fromMS(4)));
scan.entries.push_back(WiFiMeasurement(vap4, -5, base+Timestamp::fromMS(5)));
scan.entries.push_back(WiFiMeasurement(vap5, -6, base+Timestamp::fromMS(6)));
scan.entries.push_back(WiFiMeasurement(vap6, -7, base+Timestamp::fromMS(7)));
scan.entries.push_back(WiFiMeasurement(vap7, -8, base+Timestamp::fromMS(8)));
scan.entries.push_back(WiFiMeasurement(vap8, -9, base+Timestamp::fromMS(9)));
const WiFiMeasurements gAvg = vgAvg.group(scan);
const WiFiMeasurements gMedian = vgMedian.group(scan);
const WiFiMeasurements gMax = vgMax.group(scan);
// correct average rssi / average timestamp?
ASSERT_EQ(-5, gAvg.entries.back().getRSSI());
ASSERT_EQ(base+Timestamp::fromMS(5), gAvg.entries.front().getTimestamp());
// correct median rssi / min timestamp?
ASSERT_EQ(-5, gMedian.entries.back().getRSSI());
ASSERT_EQ(base+Timestamp::fromMS(1), gMedian.entries.back().getTimestamp()); // min ts
// correct max rssi / max timestamp?
ASSERT_EQ(-1, gMax.entries.back().getRSSI());
ASSERT_EQ(base+Timestamp::fromMS(9), gMax.entries.back().getTimestamp()); // max ts
}
#endif