travis_test_lightsensors.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 #encoding: utf8
3 import unittest, rostest
4 import rosnode, rospy
5 import time
6 from raspicat.msg import LightSensorValues
7 
8 class LightsensorTest(unittest.TestCase):
9  def setUp(self):
10  self.count = 0
11  rospy.Subscriber('/lightsensors', LightSensorValues, self.callback)
12  self.values = LightSensorValues()
13 
14  def callback(self,data):
15  self.count += 1
16  self.values = data
17 
18  def check_values(self,lf,ls,rs,rf):
19  vs = self.values
20  self.assertEqual(vs.left_forward, lf, "different value: left_forward")
21  self.assertEqual(vs.left_side, ls, "different value: left_side")
22  self.assertEqual(vs.right_side, rs, "different value: right_side")
23  self.assertEqual(vs.right_forward, rf, "different value: right_forward")
24  self.assertEqual(vs.sum_all, lf+ls+rs+rf, "different value: sum_all")
25  self.assertEqual(vs.sum_forward, lf+rf, "different value: sum_forward")
26 
27  def test_node_exist(self):
28  nodes = rosnode.get_node_names()
29  self.assertIn('/lightsensors',nodes, "node does not exist")
30 
31  def test_get_value(self):
32  rospy.set_param('/lightsensors/frequency',10) #センサの値取得の周期を10Hzに
33  time.sleep(2) #パラメータの反映を待つ
34  with open("/dev/rtlightsensor0","w") as f: #ダミーの値をダミーのファイルに
35  f.write("-1 0 123 4321\n")
36 
37  time.sleep(3)
38  ###コールバック関数が最低1回は呼ばれ、値が取得できているかを確認###
39  self.assertFalse(self.count == 0,"cannot subscribe the topic")
40  self.check_values(4321,123,0,-1)
41 
43  rospy.set_param('/lightsensors/frequency',1) #センサの値取得の周期を1Hzに
44  time.sleep(2) #反映を待つ
45  c_prev = self.count #callbackが呼ばれた回数を記録
46  time.sleep(3)
47  ###コールバック関数が3秒間で最低1回、最高でも4回しか呼ばれてないことを確認###
48  self.assertTrue(self.count < c_prev + 4,"freq does not change")
49  self.assertFalse(self.count == c_prev,"subscriber is stopped")
50 
51 if __name__ == '__main__':
52  time.sleep(3)
53  rospy.init_node('travis_test_lightsensors')
54  rostest.rosrun('raspicat','travis_test_lightsensors',LightsensorTest)
count
コールバック関数が最低1回は呼ばれ、値が取得できているかを確認###


raspicat
Author(s): Ryuichi Ueda , Daisuke Sato
autogenerated on Mon Jun 10 2019 14:27:50