summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorNingyuan Wang2016-12-01 22:29:05 -0600
committerNingyuan Wang2016-12-06 23:10:37 -0600
commit38632b29f9da51933abcdc8a4d77e5829dae6c91 (patch)
tree85457b4855f159bb2aaebfefa3c46aca0a94e9e5 /tests
parentc1955df1a88bc670ec6db6a568cefccc0203b9e2 (diff)
downloadsystem-connectivity-wificond-38632b29f9da51933abcdc8a4d77e5829dae6c91.tar.gz
system-connectivity-wificond-38632b29f9da51933abcdc8a4d77e5829dae6c91.tar.xz
system-connectivity-wificond-38632b29f9da51933abcdc8a4d77e5829dae6c91.zip
Add unit tests for NetlinkUtils::GetWiphyInfo()
Bug: 33279651 Test: compile, unit test Change-Id: Id67fd10ceb3058a0792aa81fce112d4cd5778ba2
Diffstat (limited to 'tests')
-rw-r--r--tests/netlink_utils_unittest.cpp130
1 files changed, 129 insertions, 1 deletions
diff --git a/tests/netlink_utils_unittest.cpp b/tests/netlink_utils_unittest.cpp
index 029b989..60d4cc2 100644
--- a/tests/netlink_utils_unittest.cpp
+++ b/tests/netlink_utils_unittest.cpp
@@ -39,8 +39,17 @@ namespace wificond {
39 39
40namespace { 40namespace {
41 41
42constexpr uint32_t kFakeSequenceNumber = 162; 42constexpr uint8_t kFakeMaxNumScanSSIDs = 10;
43constexpr uint8_t kFakeMaxNumSchedScanSSIDs = 16;
44constexpr uint8_t kFakeMaxMatchSets = 18;
43constexpr uint16_t kFakeFamilyId = 14; 45constexpr uint16_t kFakeFamilyId = 14;
46constexpr uint32_t kFakeFrequency1 = 2412;
47constexpr uint32_t kFakeFrequency2 = 2437;
48constexpr uint32_t kFakeFrequency3 = 2484;
49constexpr uint32_t kFakeFrequency4 = 5200;
50constexpr uint32_t kFakeFrequency5 = 5400;
51constexpr uint32_t kFakeFrequency6 = 5600;
52constexpr uint32_t kFakeSequenceNumber = 162;
44constexpr uint16_t kFakeWiphyIndex = 8; 53constexpr uint16_t kFakeWiphyIndex = 8;
45constexpr int kFakeErrorCode = EIO; 54constexpr int kFakeErrorCode = EIO;
46const char kFakeInterfaceName[] = "testif0"; 55const char kFakeInterfaceName[] = "testif0";
@@ -266,5 +275,124 @@ TEST_F(NetlinkUtilsTest, CanHandleGetInterfaceInfoError) {
266 &interface_mac_addr)); 275 &interface_mac_addr));
267} 276}
268 277
278TEST_F(NetlinkUtilsTest, CanGetWiphyInfo) {
279 NL80211Packet new_wiphy(
280 netlink_manager_->GetFamilyId(),
281 NL80211_CMD_NEW_WIPHY,
282 netlink_manager_->GetSequenceNumber(),
283 getpid());
284 new_wiphy.AddAttribute(NL80211Attr<uint32_t>(NL80211_ATTR_WIPHY,
285 kFakeWiphyIndex));
286
287 // Insert band information to mock netlink response.
288
289 NL80211NestedAttr freq_2g_1(1);
290 NL80211NestedAttr freq_2g_2(2);
291 NL80211NestedAttr freq_2g_3(3);
292 NL80211NestedAttr freq_5g_1(4);
293 NL80211NestedAttr freq_5g_2(5);
294 NL80211NestedAttr freq_dfs_1(6);
295 freq_2g_1.AddAttribute(NL80211Attr<uint32_t>(NL80211_FREQUENCY_ATTR_FREQ,
296 kFakeFrequency1));
297 freq_2g_2.AddAttribute(NL80211Attr<uint32_t>(NL80211_FREQUENCY_ATTR_FREQ,
298 kFakeFrequency2));
299 freq_2g_3.AddAttribute(NL80211Attr<uint32_t>(NL80211_FREQUENCY_ATTR_FREQ,
300 kFakeFrequency3));
301 freq_5g_1.AddAttribute(NL80211Attr<uint32_t>(NL80211_FREQUENCY_ATTR_FREQ,
302 kFakeFrequency4));
303 freq_5g_2.AddAttribute(NL80211Attr<uint32_t>(NL80211_FREQUENCY_ATTR_FREQ,
304 kFakeFrequency5));
305 // DFS frequency.
306 freq_dfs_1.AddAttribute(NL80211Attr<uint32_t>(NL80211_FREQUENCY_ATTR_FREQ,
307 kFakeFrequency6));
308 freq_dfs_1.AddAttribute(NL80211Attr<uint32_t>(
309 NL80211_FREQUENCY_ATTR_DFS_STATE,
310 NL80211_DFS_USABLE));
311
312 NL80211NestedAttr band_2g_freqs(NL80211_BAND_ATTR_FREQS);
313 NL80211NestedAttr band_5g_freqs(NL80211_BAND_ATTR_FREQS);
314 band_2g_freqs.AddAttribute(freq_2g_1);
315 band_2g_freqs.AddAttribute(freq_2g_2);
316 band_2g_freqs.AddAttribute(freq_2g_3);
317 band_5g_freqs.AddAttribute(freq_5g_1);
318 band_5g_freqs.AddAttribute(freq_5g_2);
319 band_5g_freqs.AddAttribute(freq_dfs_1);
320
321 NL80211NestedAttr band_2g_attr(1);
322 NL80211NestedAttr band_5g_attr(2);
323 band_2g_attr.AddAttribute(band_2g_freqs);
324 band_5g_attr.AddAttribute(band_5g_freqs);
325
326 NL80211NestedAttr band_attr(NL80211_ATTR_WIPHY_BANDS);
327 band_attr.AddAttribute(band_2g_attr);
328 band_attr.AddAttribute(band_5g_attr);
329
330 new_wiphy.AddAttribute(band_attr);
331
332 // Insert scan capabilities to mock netlink response.
333 new_wiphy.AddAttribute(NL80211Attr<uint8_t>(NL80211_ATTR_MAX_NUM_SCAN_SSIDS,
334 kFakeMaxNumScanSSIDs));
335 new_wiphy.AddAttribute(NL80211Attr<uint8_t>(
336 NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS,
337 kFakeMaxNumSchedScanSSIDs));
338 new_wiphy.AddAttribute(NL80211Attr<uint8_t>(NL80211_ATTR_MAX_MATCH_SETS,
339 kFakeMaxMatchSets));
340
341 // Insert wiphy features to mock netlink response.
342 new_wiphy.AddAttribute(NL80211Attr<uint32_t>(
343 NL80211_ATTR_FEATURE_FLAGS,
344 NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR));
345
346 vector<NL80211Packet> response = {new_wiphy};
347
348 EXPECT_CALL(*netlink_manager_, SendMessageAndGetResponses(_, _)).
349 WillOnce(DoAll(MakeupResponse(response), Return(true)));
350
351 BandInfo band_info;
352 ScanCapabilities scan_capabilities;
353 WiphyFeatures wiphy_features;
354 EXPECT_TRUE(netlink_utils_->GetWiphyInfo(kFakeWiphyIndex,
355 &band_info,
356 &scan_capabilities,
357 &wiphy_features));
358
359 // Verify band information.
360 vector<uint32_t> band_2g_expected = {kFakeFrequency1,
361 kFakeFrequency2, kFakeFrequency3};
362 vector<uint32_t> band_5g_expected = {kFakeFrequency4, kFakeFrequency5};
363 vector<uint32_t> band_dfs_expected = {kFakeFrequency6};
364 EXPECT_EQ(band_info.band_2g, band_2g_expected);
365 EXPECT_EQ(band_info.band_5g, band_5g_expected);
366 EXPECT_EQ(band_info.band_dfs, band_dfs_expected);
367
368 // Verify scan capabilities.
369 EXPECT_EQ(scan_capabilities.max_num_scan_ssids,
370 kFakeMaxNumScanSSIDs);
371 EXPECT_EQ(scan_capabilities.max_num_sched_scan_ssids,
372 kFakeMaxNumSchedScanSSIDs);
373 EXPECT_EQ(scan_capabilities.max_match_sets,
374 kFakeMaxMatchSets);
375
376 // Verify wiphy features.
377 EXPECT_TRUE(wiphy_features.supports_random_mac_oneshot_scan);
378 EXPECT_FALSE(wiphy_features.supports_random_mac_sched_scan);
379}
380
381TEST_F(NetlinkUtilsTest, CanHandleGetWiphyInfoError) {
382 // Mock an error response from kernel.
383 vector<NL80211Packet> response = {CreateControlMessageError(kFakeErrorCode)};
384
385 EXPECT_CALL(*netlink_manager_, SendMessageAndGetResponses(_, _)).
386 WillOnce(DoAll(MakeupResponse(response), Return(true)));
387
388 BandInfo band_info;
389 ScanCapabilities scan_capabilities;
390 WiphyFeatures wiphy_features;
391 EXPECT_FALSE(netlink_utils_->GetWiphyInfo(kFakeWiphyIndex,
392 &band_info,
393 &scan_capabilities,
394 &wiphy_features));
395}
396
269} // namespace wificond 397} // namespace wificond
270} // namespace android 398} // namespace android