MCPcopy
hub / github.com/dronekit/dronekit-python / test_110

Function test_110

dronekit/test/sitl/test_110.py:10–70  ·  view source on GitHub ↗
(connpath)

Source from the content-addressed store, hash-verified

8
9@with_sitl
10def test_110(connpath):
11 vehicle = connect(connpath, wait_ready=True)
12
13 # NOTE these are *very inappropriate settings*
14 # to make on a real vehicle. They are leveraged
15 # exclusively for simulation. Take heed!!!
16 vehicle.parameters['FS_GCS_ENABLE'] = 0
17 vehicle.parameters['FS_EKF_THRESH'] = 100
18
19 # Await armability.
20 wait_for(lambda : vehicle.is_armable, 60)
21
22 # Change the vehicle into STABILIZE mode
23 vehicle.mode = VehicleMode("GUIDED")
24
25 # NOTE wait crudely for ACK on mode update
26 time.sleep(3)
27
28 # Define example callback for mode
29 def armed_callback(vehicle, attribute, value):
30 armed_callback.called += 1
31
32 armed_callback.called = 0
33
34 # When the same (event, callback) pair is passed to add_attribute_listener,
35 # only one instance of the observer callback should be added.
36 vehicle.add_attribute_listener('armed', armed_callback)
37 vehicle.add_attribute_listener('armed', armed_callback)
38 vehicle.add_attribute_listener('armed', armed_callback)
39 vehicle.add_attribute_listener('armed', armed_callback)
40 vehicle.add_attribute_listener('armed', armed_callback)
41
42 # arm and see update.
43 vehicle.armed = True
44
45 # Wait for ACK.
46 wait_for(lambda : armed_callback.called, 10)
47
48 # Ensure the callback was called.
49 assert armed_callback.called > 0, "Callback should have been called within %d seconds" % (time_max,)
50
51 # Rmove all listeners. The first call should remove all listeners
52 # we've added; the second call should be ignored and not throw.
53 # NOTE: We test if armed_callback were treating adding each additional callback
54 # and remove_attribute_listener were removing them one at a time; in this
55 # case, there would be three callbacks still attached.
56 vehicle.remove_attribute_listener('armed', armed_callback)
57 vehicle.remove_attribute_listener('armed', armed_callback)
58 callcount = armed_callback.called
59
60 # Disarm and see update.
61 vehicle.armed = False
62
63 # Wait for ack
64 time.sleep(3)
65
66 # Ensure the callback was called zero times.
67 assert_equals(armed_callback.called, callcount,

Callers

nothing calls this directly

Calls 6

connectFunction · 0.90
wait_forFunction · 0.90
VehicleModeClass · 0.90
closeMethod · 0.45

Tested by

no test coverage detected