Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: device/bluetooth/test/README.md

Issue 2737343003: bluetooth: Add FakeBluetooth interface (Closed)
Patch Set: Add all the READMEs! Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Bluetooth 1 # Testing
2 2
3 `device/bluetooth` abstracts
4 [Bluetooth Classic](https://en.wikipedia.org/wiki/Bluetooth) and
5 [Low Energy](https://en.wikipedia.org/wiki/Bluetooth_low_energy) features
6 across multiple platforms.
7
8 Classic and Low Energy based profiles differ substantially. Platform
9 implementations may support only one or the other, even though several classes
10 have interfaces for both, e.g. `BluetoothAdapter` & `BluetoothDevice`.
11
12 | | Classic | Low Energy |
13 |-----------|:-------:|:-----------:|
14 | Android | no | yes |
15 | Chrome OS | yes | yes |
16 | Linux | yes | yes |
17 | Mac | yes | yes |
18 | Windows | some | nearly |
19
20 Chrome OS and Linux are supported via BlueZ, see `*_bluez` files.
21
22 [Mojo](https://www.chromium.org/developers/design-documents/mojo)
23 interfaces in [public/interfaces](public/interfaces) have been started
24 but are *not* ready for production use.
25
26
27 ## Maintainer History
28
29 Initial implementation OWNERS were youngki@chromium.org, keybuk@chromium.org,
30 armansito@chromium.org, and rpaquay@chromium.org. They no longer contribute to
31 chromium fulltime. They were responsible for support for Chrome OS Bluetooth
32 features and the Chrome Apps APIs:
33
34 * [chrome.bluetooth](https://developer.chrome.com/apps/bluetooth)
35 * [chrome.bluetoothLowEnergy](https://developer.chrome.com/apps/bluetoothLowEner gy)
36 * [chrome.bluetoothSocket](https://developer.chrome.com/apps/bluetoothSocket)
37
38 Active development in 2015 & 2016 is focused on enabling GATT features for:
39
40 * [Web Bluetooth](https://crbug.com/419413)
41 * Peripheral mode for Chrome OS.
42
43 Known future work is tracked in the
44 [Refactoring meta issue](https://crbug.com/580406).
45
46
47 ## Testing
48
49 Implementation of the Bluetooth component is tested via unittests. Client code 3 Implementation of the Bluetooth component is tested via unittests. Client code
50 uses Mock Bluetooth objects: 4 uses Mock Bluetooth objects:
51 5
6 ## Mojo Testing Interface Implementation
7 See [//public/interfaces/test/README.md](//device/bluetooth/public/interfaces/te st/README.md)
8 for details about the interface. The current implementation of this interface
9 creates a fake implementation of the current non-mojo C++ Bluetooth interface.
10 This interface is implemented across files with a "fake_" prefix.
11 *This interface may be removed when a Bluetooth Mojo Service is introduced, if
12 Web Bluetooth remains its only client. Testing code would implement the service
13 as needed for tests.*
52 14
53 ### Cross Platform Unit Tests 15 ## Cross Platform Unit Tests
54 16
55 New feature development uses cross platform unit tests. This reduces test code 17 New feature development uses cross platform unit tests. This reduces test code
56 redundancy and produces consistency across all implementations. 18 redundancy and produces consistency across all implementations.
57 19
58 Unit tests operate at the public `device/bluetooth` API layer and the 20 Unit tests operate at the public `device/bluetooth` API layer and the
59 `BluetoothTest` fixture controls fake operating system behavior as close to the 21 `BluetoothTest` fixture controls fake operating system behavior as close to the
60 platfom as possible. The resulting test coverage spans the cross platform API, 22 platfom as possible. The resulting test coverage spans the cross platform API,
61 common implementation, and platform specific implementation as close to 23 common implementation, and platform specific implementation as close to
62 operating system APIs as possible. 24 operating system APIs as possible.
63 25
64 `test/bluetooth_test.h` defines the cross platform test fixture 26 `test/bluetooth_test.h` defines the cross platform test fixture
65 `BluetoothTestBase`. Platform implementations provide subclasses, such as 27 `BluetoothTestBase`. Platform implementations provide subclasses, such as
66 `test/bluetooth_test_android.h` and typedef to the name `BluetoothTest`. 28 `test/bluetooth_test_android.h` and typedef to the name `BluetoothTest`.
67 29
68 [More testing information](https://docs.google.com/document/d/1mBipxn1sJu6jMqP0R QZpkYXC1o601bzLCpCxwTA2yGA/edit?usp=sharing) 30 [More testing information](https://docs.google.com/document/d/1mBipxn1sJu6jMqP0R QZpkYXC1o601bzLCpCxwTA2yGA/edit?usp=sharing)
69 31
70 ### Legacy Platform Specific Unit Tests 32 ## Legacy Platform Specific Unit Tests
71 33
72 Early code (Classic on most platforms, and Low Energy on BlueZ) was tested with 34 Early code (Classic on most platforms, and Low Energy on BlueZ) was tested with
73 platform specific unit tests, e.g. `bluetooth_bluez_unittest.cc` & 35 platform specific unit tests, e.g. `bluetooth_bluez_unittest.cc` &
74 `bluetooth_adapter_win_unittest.cc`. The BlueZ style has platform specific 36 `bluetooth_adapter_win_unittest.cc`. The BlueZ style has platform specific
75 methods to create fake devices and the public API is used to interact with them. 37 methods to create fake devices and the public API is used to interact with them.
76 38
77 Maintenance of these earlier implementation featuress should update tests in 39 Maintenance of these earlier implementation featuress should update tests in
78 place. Long term these tests should be [refactored into cross platform 40 place. Long term these tests should be [refactored into cross platform
79 tests](https://crbug.com/580403). 41 tests](https://crbug.com/580403).
80 42
81 43
82 ### Mock Bluetooth Objects 44 ## Mock Bluetooth Objects
83 45
84 `test/mock_bluetooth_*` files provide GoogleMock based fake objects for use in 46 `test/mock_bluetooth_*` files provide GoogleMock based fake objects for use in
85 client code. 47 client code.
86 48
87 49
88 ### Chrome OS Blueooth Controller Tests 50 ## Chrome OS Blueooth Controller Tests
89 51
90 Bluetooth controller system tests generating radio signals are run and managed 52 Bluetooth controller system tests generating radio signals are run and managed
91 by the Chrome OS team. See: 53 by the Chrome OS team. See:
92 https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/serve r/site_tests/ 54 https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/serve r/site_tests/
93 https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/serve r/cros/bluetooth/ 55 https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/serve r/cros/bluetooth/
94 https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/clien t/cros/bluetooth/ 56 https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/clien t/cros/bluetooth/
95 57
96 58
97 ## Android 59 # Android
98 60
99 The android implementation requires crossing from C++ to Java using 61 The android implementation requires crossing from C++ to Java using
100 [__JNI__](https://www.chromium.org/developers/design-documents/android-jni). 62 [__JNI__](https://www.chromium.org/developers/design-documents/android-jni).
101 63
102 Object ownership is rooted in the C++ classes, starting with the Adapter, which 64 Object ownership is rooted in the C++ classes, starting with the Adapter, which
103 owns Devices, Services, etc. Java counter parts interface with the Android 65 owns Devices, Services, etc. Java counter parts interface with the Android
104 Bluetooth objects. E.g. 66 Bluetooth objects. E.g.
105 67
106 For testing, the Android objects are __wrapped__ in: 68 For testing, the Android objects are __wrapped__ in:
107 `android/java/src/org/chromium/device/bluetooth/Wrappers.java`. <br> 69 `android/java/src/org/chromium/device/bluetooth/Wrappers.java`. <br>
(...skipping 14 matching lines...) Expand all
122 * `android/.../ChromeBluetoothService.java` uses: 84 * `android/.../ChromeBluetoothService.java` uses:
123 * `android/.../Wrappers.java`: `BluetoothServiceWrapper` 85 * `android/.../Wrappers.java`: `BluetoothServiceWrapper`
124 * Which under test is a `FakeBluetoothService` 86 * Which under test is a `FakeBluetoothService`
125 * ... and so on for characteristics and descriptors. 87 * ... and so on for characteristics and descriptors.
126 88
127 Fake objects are controlled by `bluetooth_test_android.cc`. 89 Fake objects are controlled by `bluetooth_test_android.cc`.
128 90
129 See also: [Class Diagram of Web Bluetooth through Bluetooth Android][Class] 91 See also: [Class Diagram of Web Bluetooth through Bluetooth Android][Class]
130 92
131 [Class]: https://sites.google.com/a/chromium.org/dev/developers/design-documents /bluetooth-design-docs/web-bluetooth-through-bluetooth-android-class-diagram 93 [Class]: https://sites.google.com/a/chromium.org/dev/developers/design-documents /bluetooth-design-docs/web-bluetooth-through-bluetooth-android-class-diagram
132
133
134 ## Design Documents
135
136 * [Bluetooth Notifications](https://docs.google.com/document/d/1guBtAnQUP8ZoZre4 VQGrjR5uX0ZYxfK-lwKNeqY0-z4/edit?usp=sharing) 2016-08-26
137 * Web Bluetooth through Android implementation details, class diagram and
138 call flow.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698