mirror of
https://github.com/CopterExpress/clover.git
synced 2026-05-29 22:39:33 +00:00
79 lines
2.2 KiB
Python
Executable File
79 lines
2.2 KiB
Python
Executable File
#!/usr/bin/env python
|
|
import rospy
|
|
import pytest
|
|
from mavros_msgs.msg import State
|
|
from clover import srv
|
|
import time
|
|
|
|
@pytest.fixture()
|
|
def node():
|
|
return rospy.init_node('clover_test', anonymous=True)
|
|
|
|
def test_state(node):
|
|
state = rospy.wait_for_message('mavros/state', State, timeout=10)
|
|
assert state.connected == False
|
|
assert state.armed == False
|
|
assert state.guided == False
|
|
assert state.mode == ''
|
|
|
|
def test_simple_offboard_services_available():
|
|
rospy.wait_for_service('get_telemetry', timeout=5)
|
|
rospy.wait_for_service('navigate', timeout=5)
|
|
rospy.wait_for_service('navigate_global', timeout=5)
|
|
rospy.wait_for_service('set_position', timeout=5)
|
|
rospy.wait_for_service('set_velocity', timeout=5)
|
|
rospy.wait_for_service('set_attitude', timeout=5)
|
|
rospy.wait_for_service('set_rates', timeout=5)
|
|
rospy.wait_for_service('land', timeout=5)
|
|
rospy.wait_for_service('simple_offboard/release', timeout=5)
|
|
|
|
def test_web_video_server(node):
|
|
try:
|
|
# Python 2
|
|
import urllib2 as urllib
|
|
except ModuleNotFoundError:
|
|
# Python 3
|
|
import urllib.request as urllib
|
|
urllib.urlopen("http://localhost:8080").read()
|
|
|
|
def test_blocks(node):
|
|
rospy.wait_for_service('clover_blocks/run', timeout=5)
|
|
rospy.wait_for_service('clover_blocks/stop', timeout=5)
|
|
rospy.wait_for_service('clover_blocks/load', timeout=5)
|
|
rospy.wait_for_service('clover_blocks/store', timeout=5)
|
|
|
|
from std_msgs.msg import String
|
|
from clover_blocks.srv import Run
|
|
|
|
def wait_print():
|
|
try:
|
|
wait_print.result = rospy.wait_for_message('clover_blocks/print', String, timeout=5).data
|
|
except Exception as e:
|
|
wait_print.result = str(e)
|
|
|
|
import threading
|
|
t = threading.Thread(target=wait_print)
|
|
t.start()
|
|
rospy.sleep(0.1)
|
|
|
|
run = rospy.ServiceProxy('clover_blocks/run', Run)
|
|
assert run(code='print("test")').success == True
|
|
|
|
t.join()
|
|
assert wait_print.result == 'test'
|
|
|
|
def test_long_callback():
|
|
from clover import long_callback
|
|
from time import sleep
|
|
|
|
# very basic test for long_callback
|
|
@long_callback
|
|
def cb(i):
|
|
cb.counter += i
|
|
cb.counter = 0
|
|
cb(2)
|
|
sleep(0.1)
|
|
cb(3)
|
|
sleep(1)
|
|
assert cb.counter == 5
|