diff options
author | Ningyuan Wang | 2016-12-01 22:29:05 -0600 |
---|---|---|
committer | Ningyuan Wang | 2016-12-06 23:10:37 -0600 |
commit | 38632b29f9da51933abcdc8a4d77e5829dae6c91 (patch) | |
tree | 85457b4855f159bb2aaebfefa3c46aca0a94e9e5 /tests | |
parent | c1955df1a88bc670ec6db6a568cefccc0203b9e2 (diff) | |
download | system-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.cpp | 130 |
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 | ||
40 | namespace { | 40 | namespace { |
41 | 41 | ||
42 | constexpr uint32_t kFakeSequenceNumber = 162; | 42 | constexpr uint8_t kFakeMaxNumScanSSIDs = 10; |
43 | constexpr uint8_t kFakeMaxNumSchedScanSSIDs = 16; | ||
44 | constexpr uint8_t kFakeMaxMatchSets = 18; | ||
43 | constexpr uint16_t kFakeFamilyId = 14; | 45 | constexpr uint16_t kFakeFamilyId = 14; |
46 | constexpr uint32_t kFakeFrequency1 = 2412; | ||
47 | constexpr uint32_t kFakeFrequency2 = 2437; | ||
48 | constexpr uint32_t kFakeFrequency3 = 2484; | ||
49 | constexpr uint32_t kFakeFrequency4 = 5200; | ||
50 | constexpr uint32_t kFakeFrequency5 = 5400; | ||
51 | constexpr uint32_t kFakeFrequency6 = 5600; | ||
52 | constexpr uint32_t kFakeSequenceNumber = 162; | ||
44 | constexpr uint16_t kFakeWiphyIndex = 8; | 53 | constexpr uint16_t kFakeWiphyIndex = 8; |
45 | constexpr int kFakeErrorCode = EIO; | 54 | constexpr int kFakeErrorCode = EIO; |
46 | const char kFakeInterfaceName[] = "testif0"; | 55 | const char kFakeInterfaceName[] = "testif0"; |
@@ -266,5 +275,124 @@ TEST_F(NetlinkUtilsTest, CanHandleGetInterfaceInfoError) { | |||
266 | &interface_mac_addr)); | 275 | &interface_mac_addr)); |
267 | } | 276 | } |
268 | 277 | ||
278 | TEST_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 | |||
381 | TEST_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 |