Skip to content

Commit 3454f06

Browse files
author
Florian Weisshardt
committedMay 24, 2016
pylint
1 parent 4281591 commit 3454f06

20 files changed

+73
-66
lines changed
 

‎.pylint.config

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
[REPORTS]
2+
reports=no
3+
4+
[MESSAGES CONTROL]
5+
disable= line-too-long,
6+
missing-docstring,
7+
old-style-class,
8+
no-self-use,
9+
too-many-locals,
10+
too-many-branches,
11+
too-few-public-methods,
12+
too-many-public-methods,
13+
too-many-instance-attributes,
14+
duplicate-code,
15+
invalid-name,
16+
no-name-in-module

‎atf_core/scripts/analyse_all.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#!/usr/bin/env python
2-
import rospy
32
import rospkg
43
import sys
54
import os
@@ -12,23 +11,23 @@
1211
print "analysing all in package '" + pkg + "'"
1312
pkg_path = r.get_path(pkg)
1413
path_to_test_files = os.path.join(pkg_path, "test_generated/analysing")
15-
14+
1615
filenames = []
1716
for (dirpath, dirnames, list_of_files) in os.walk(path_to_test_files):
1817
for f in list_of_files:
1918
if f.endswith(".test"):
2019
filenames.append(f)
2120

2221
print "found " + str(len(filenames)) + " files: " + str(filenames)
23-
22+
2423
# analyse all
2524
counter = 1
2625
for f in filenames:
2726
print "\n--> analysing " + str(counter) + "/" + str(len(filenames)) + " (" + str(f) + ")"
2827
command = "rostest " + pkg + " " + f
2928
subprocess.call(command, shell=True)
3029
counter += 1
31-
30+
3231
# merge
3332
command = "rostest " + pkg + " " + "merging.test"
3433
subprocess.call(command, shell=True)

‎atf_core/scripts/generate_tests.py

+12-9
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def __init__(self, arguments):
2323
self.package_name = arguments[1]
2424
self.package_path = arguments[2]
2525
self.generation_config = self.load_yaml(self.package_path + "/config/test_generation_config.yaml")
26-
26+
2727
# required parameters
2828
try:
2929
self.test_suite_file = os.path.join(self.package_path, self.generation_config["test_suite_file"])
@@ -44,7 +44,7 @@ def __init__(self, arguments):
4444
print error_message
4545
self.print_output = "ATF: Test generation failed! " + error_message
4646
sys.exit(1)
47-
47+
4848
# optional parameters
4949
try:
5050
if type(self.generation_config["upload_data"]) is bool:
@@ -63,10 +63,13 @@ def __init__(self, arguments):
6363

6464
self.test_list = {}
6565

66-
# Empty folders
6766
self.test_generated_path = os.path.join(self.package_path, "test_generated")
6867
self.test_generated_recording_path = os.path.join(self.test_generated_path, "recording")
6968
self.test_generated_analysing_path = os.path.join(self.test_generated_path, "analysing")
69+
self.create_folders()
70+
71+
def create_folders(self):
72+
# Empty folders
7073
if os.path.exists(self.test_generated_path):
7174
shutil.rmtree(self.test_generated_path)
7275
os.makedirs(self.test_generated_recording_path)
@@ -95,7 +98,7 @@ def generate_tests(self):
9598
test = em.test
9699
node = em.node
97100
param = em.param
98-
rosparam = em.rosparam
101+
#rosparam = em.rosparam
99102

100103
for item in self.test_list:
101104
robot_config = self.load_yaml(os.path.join(self.package_path, self.generation_config["robot_config_path"], self.test_list[item]["robot"], "robot_config.yaml"))
@@ -128,7 +131,7 @@ def generate_tests(self):
128131

129132
test_record.append(node(param(name="/test_config_file", value="$(find " + self.package_name + ")/" + self.generation_config["test_config_file"]),
130133
param(name="/bagfile_output", value=self.bagfile_output),
131-
name="atf_recorder", pkg="atf_recorder", type="recorder_core.py", output="screen"))
134+
name="atf_recorder", pkg="atf_recorder", type="recorder_core.py", output="screen"))
132135

133136
for params in robot_config["additional_parameter"]:
134137
test_record.append(param(name=str(params["name"]), value=str(params["value"])))
@@ -160,7 +163,7 @@ def generate_tests(self):
160163
)
161164

162165
xmlstr = minidom.parseString(ElementTree.tostring(test_analyse)).toprettyxml(indent=" ")
163-
filepath = os.path.join(self.test_generated_analysing_path, "analysing_" + item) + ".test"
166+
filepath = os.path.join(self.test_generated_analysing_path, "analysing_" + item) + ".test"
164167
with open(filepath, "w") as f:
165168
f.write(xmlstr)
166169

@@ -175,14 +178,14 @@ def generate_tests(self):
175178
'time-limit': "10"})
176179
)
177180
xmlstr = minidom.parseString(ElementTree.tostring(test_merge)).toprettyxml(indent=" ")
178-
filepath = os.path.join(self.test_generated_path, "merging.test")
181+
filepath = os.path.join(self.test_generated_path, "merging.test")
179182
with open(filepath, "w") as f:
180183
f.write(xmlstr)
181-
184+
182185
# Uploading
183186
test_upload = launch()
184187
if self.upload_data:
185-
test_upload.append(
188+
test_upload.append(
186189
test({'test-name': "uploading_data", 'pkg': "atf_core", 'type': "test_dropbox_uploader.py",
187190
'time-limit': str(self.time_limit_uploading), 'args': "-f " + os.path.join(self.package_path, "config/.dropbox_uploader_config") + " upload " + self.bagfile_output + " " + os.path.join(self.package_name, "data")}))
188191

‎atf_core/scripts/merger.py

+10-13
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import os
77
import copy
88
import json
9-
import yaml
10-
import numpy
119

1210
class Merger():
1311
def __init__(self):
@@ -28,7 +26,6 @@ def merge(self):
2826
#print "subtests=", subtests
2927
test_data_merged = {}
3028
for subtest in subtests:
31-
subtest_data = subtests
3229
#print "subtest=", subtest
3330
subtest_data = self.load_data(os.path.join(self.json_output, subtest + ".json"))
3431
#print "subtest_data=", subtest_data
@@ -41,7 +38,7 @@ def merge(self):
4138
for metric_data in metric_data_list:
4239
#print "metric_data=", metric_data
4340
#print "metric_data['data']=", metric_data['data']
44-
41+
4542
# check if entry exists
4643
if testblock_name not in test_data_merged:
4744
# create new testblock entry
@@ -59,7 +56,7 @@ def merge(self):
5956
else:
6057
# entry already exists
6158
#print "entry for metric '" + metric_name + "' in testblock '" + testblock_name + "' already exists"
62-
59+
6360
# check if merging is possible, if not: append
6461
is_in, element_number = self.is_in_metric_data_list(copy.deepcopy(metric_data), copy.deepcopy(test_data_merged[testblock_name][metric_name]))
6562
if is_in:
@@ -79,7 +76,7 @@ def merge(self):
7976
#print "test_data_merged=", test_data_merged
8077

8178
#print "test_data_merged before average=", test_data_merged
82-
79+
8380
# calculate min/max/average
8481
for testblock_name, testblock_data in test_data_merged.items():
8582
#print "testblock_data=", testblock_data
@@ -90,10 +87,10 @@ def merge(self):
9087
#print "test_data_merged[testblock_name][metric_name][i]['data']['values']=", test_data_merged[testblock_name][metric_name][i]['data']['values']
9188
test_data_merged[testblock_name][metric_name][i]['data']['min'] = min(test_data_merged[testblock_name][metric_name][i]['data']['values'])
9289
test_data_merged[testblock_name][metric_name][i]['data']['max'] = max(test_data_merged[testblock_name][metric_name][i]['data']['values'])
93-
test_data_merged[testblock_name][metric_name][i]['data']['average'] = round(sum(test_data_merged[testblock_name][metric_name][i]['data']['values'])/len(test_data_merged[testblock_name][metric_name][i]['data']['values']),3)
94-
90+
test_data_merged[testblock_name][metric_name][i]['data']['average'] = round(sum(test_data_merged[testblock_name][metric_name][i]['data']['values'])/len(test_data_merged[testblock_name][metric_name][i]['data']['values']), 3)
91+
9592
#print "test_data_merged after average=", test_data_merged
96-
93+
9794
# write to file
9895
filename = self.json_output + test_name + ".json"
9996
stream = file(filename, 'w')
@@ -107,14 +104,14 @@ def merge(self):
107104

108105
def is_in_metric_data_list(self, data, data_list):
109106
counter = 0
110-
for d in data_list:
111-
is_same = self.is_same_metric_data_without_data(copy.deepcopy(data), copy.deepcopy(d))
107+
for dat in data_list:
108+
is_same = self.is_same_metric_data(copy.deepcopy(data), copy.deepcopy(dat))
112109
if is_same:
113110
return True, counter
114111
counter += 1
115112
return False, None
116113

117-
def is_same_metric_data_without_data(self, data1, data2):
114+
def is_same_metric_data(self, data1, data2):
118115
data1.pop('data')
119116
data1.pop('groundtruth_result')
120117
data2.pop('data')
@@ -130,7 +127,7 @@ def load_data(self, filename):
130127
return doc
131128

132129
class TestMerging(unittest.TestCase):
133-
def test_MergingResults(self):
130+
def test_merging_results(self):
134131
merger = Merger()
135132
merger.merge()
136133
self.assertTrue(merger.result, merger.merging_error_message)

‎atf_core/scripts/record_all.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#!/usr/bin/env python
2-
import rospy
32
import rospkg
43
import sys
54
import os
@@ -12,15 +11,15 @@
1211
print "recording all in package '" + pkg + "'"
1312
pkg_path = r.get_path(pkg)
1413
path_to_test_files = os.path.join(pkg_path, "test_generated/recording")
15-
14+
1615
filenames = []
1716
for (dirpath, dirnames, list_of_files) in os.walk(path_to_test_files):
1817
for f in list_of_files:
1918
if f.endswith(".test"):
2019
filenames.append(f)
2120

2221
print "found " + str(len(filenames)) + " files: " + str(filenames)
23-
22+
2423
# record all
2524
counter = 1
2625
for f in filenames:

‎atf_core/src/atf_core/atf.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import shutil
77
import os
88

9-
from atf_msgs.msg import *
9+
from atf_msgs.msg import TestStatus, Status, TestblockStatus
1010
from copy import copy
1111

1212

@@ -121,7 +121,7 @@ def export_to_file(self):
121121

122122
self.test_status_publisher.publish(test_status)
123123

124-
shutil.copy(os.path.join(rosparam.get_param("analysing/test_generated_path"), "test_list.json") , rosparam.get_param("/analysing/result_json_output"))
124+
shutil.copy(os.path.join(rosparam.get_param("analysing/test_generated_path"), "test_list.json"), rosparam.get_param("/analysing/result_json_output"))
125125

126126
filename = rosparam.get_param("/analysing/result_json_output") + self.test_name + ".json"
127127
stream = file(filename, 'w')

‎atf_core/src/atf_core/state_machine.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ def run(self):
3939
try:
4040
self.handler = self.handlers[self.startState]
4141
except:
42-
raise "InitializationError", "Must call .set_start() before .run()"
42+
raise SMError("Must call .set_start() before .run()")
4343
if not self.endStates:
44-
raise "InitializationError", "At least one state must be an end_state"
44+
raise SMError("At least one state must be an end_state")
4545

4646
rospy.loginfo("SM for testblock '" + self.name + "' is running")
4747

@@ -54,3 +54,5 @@ def run(self):
5454
self.handler = self.handlers[new_state]
5555
rospy.loginfo("SM '" + self.name + "' in state " + str(self.get_current_state()))
5656
rospy.loginfo("SM '" + self.name + "' finished with state " + str(self.get_current_state()))
57+
class SMError(Exception):
58+
pass

‎atf_metrics/src/atf_metrics/calculate_distance_to_obstacles.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/usr/bin/env python
22
import rospy
33
from atf_msgs.msg import ObstacleDistance
4-
from types import *
4+
from types import ListType
55

66

77
class CalculateDistanceToObstaclesParamHandler:

‎atf_metrics/src/atf_metrics/calculate_interface.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def parse_parameter(self, testblock_name, params):
1515
:param params: Parameter
1616
"""
1717
metrics = []
18-
18+
1919
if type(params) is not list:
2020
rospy.logerr("metric config not a list")
2121
return False

‎atf_metrics/src/atf_metrics/calculate_path_length.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,13 @@ def purge(self):
7676
def record_tf(self, event):
7777
if self.active:
7878
try:
79-
8079
self.listener.waitForTransform(self.root_frame,
8180
self.measured_frame,
8281
rospy.Time(0),
8382
rospy.Duration.from_sec(2 / self.tf_sampling_freq))
8483
(trans, rot) = self.listener.lookupTransform(self.root_frame, self.measured_frame, rospy.Time(0))
8584

86-
except (tf.Exception, tf.LookupException, tf.ConnectivityException, Exception), e:
85+
except (tf.Exception, tf.LookupException, tf.ConnectivityException), e:
8786
#rospy.logwarn(e)
8887
pass
8988
else:

‎atf_metrics/src/atf_metrics/calculate_resources.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import numpy
33
import rospy
44

5-
from atf_msgs.msg import *
5+
from atf_msgs.msg import Resources, IO, Network
66

77

88
class CalculateResourcesParamHandler:

‎atf_metrics/src/atf_metrics/calculate_time.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def parse_parameter(self, testblock_name, params):
2020
if params == None:
2121
metrics.append(CalculateTime(None, None))
2222
return metrics
23-
23+
2424
if type(params) is not list:
2525
rospy.logerr("metric config not a list")
2626
return False

‎atf_recorder/scripts/recorder_core.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import atf_recorder_plugins
1111

1212
from threading import Lock
13-
from atf_msgs.msg import *
14-
from atf_recorder.srv import *
13+
from atf_msgs.msg import Trigger, TestStatus
14+
from atf_recorder.srv import RecorderCommand, RecorderCommandResponse
1515
from atf_recorder import BagfileWriter
1616

1717

@@ -58,7 +58,7 @@ def __init__(self):
5858
# num_subscriber = ob_sub.get_num_connections()
5959

6060
self.subscriber = []
61-
self.topics= self.get_topics()
61+
self.topics = self.get_topics()
6262
rospy.Timer(rospy.Duration(0.5), self.create_subscriber_callback)
6363
rospy.sleep(1) #wait for subscribers to get active (rospy bug?)
6464

@@ -144,11 +144,10 @@ def create_subscriber_callback(self, event):
144144
if topic not in self.subscriber:
145145
try:
146146
msg_class, _, _ = rostopic.get_topic_class(topic)
147-
msg = rospy.wait_for_message(topic, msg_class)
148147
rospy.Subscriber(topic, msg_class, self.global_topic_callback, callback_args=topic)
149148
self.subscriber.append(topic)
150149
except Exception as e:
151-
#print e
150+
#print e
152151
pass
153152

154153
def command_callback(self, msg):
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
from recording_manager import RecordingManager
2-
from recorder_tools import BagfileWriter
1+
from atf_recorder.recording_manager import RecordingManager
2+
from atf_recorder.recorder_tools import BagfileWriter

‎atf_recorder/src/atf_recorder/recorder_tools.py

-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
#!/usr/bin/env python
2-
import rospy
3-
4-
52
class BagfileWriter:
63
def __init__(self, bagfile, write_lock):
74
"""

‎atf_recorder/src/atf_recorder/recording_manager.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#!/usr/bin/env python
22
import rospy
33

4-
from atf_recorder.srv import *
5-
from atf_msgs.msg import *
4+
from atf_recorder.srv import RecorderCommand
5+
from atf_msgs.msg import Trigger
66

77

88
class RecordingManager:

‎atf_recorder_plugins/src/atf_recorder_plugins/plugin_interface.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,32 @@
33
import rosgraph
44
import rosservice
55
import socket
6-
import copy
76
from atf_recorder import BagfileWriter
87
from rosapi.srv import Nodes, Topics, Publishers, Subscribers
98
from atf_msgs.msg import Api, NodeApi, InterfaceItem
9+
from rosnode import ROSNodeIOException
1010

1111
class RecordInterface:
1212
def __init__(self, write_lock, bag_file):
1313
self.rosapi_service_nodes = rospy.ServiceProxy('/rosapi/nodes', Nodes)
1414
self.rosapi_service_topics = rospy.ServiceProxy('/rosapi/topics', Topics)
1515
self.rosapi_service_publishers = rospy.ServiceProxy('/rosapi/publishers', Publishers)
1616
self.rosapi_service_subscribers = rospy.ServiceProxy('/rosapi/subscribers', Subscribers)
17-
17+
1818
self.master = rosgraph.Master("/rosnode")
1919

2020
self.BfW = BagfileWriter(bag_file, write_lock)
2121

2222
def trigger_callback(self, msg):
2323
#print "msg=", msg
2424

25-
try:
26-
publishers, subscribers, services = self.master.getSystemState()
25+
try:
26+
publishers, subscribers, services = self.master.getSystemState()
2727
#pub_topics = self.master.getPublishedTopics('/subscriber1')
2828
topic_types = self.master.getTopicTypes()
2929
service_types = self.get_service_types(services)
30-
except socket.error:
31-
raise ROSNodeIOException("Unable to communicate with master!")
30+
except socket.error:
31+
raise ROSNodeIOException("Unable to communicate with master!")
3232

3333
#print "publishers=", publishers
3434
#print "subscribers=", subscribers
@@ -41,7 +41,7 @@ def trigger_callback(self, msg):
4141
self.add_api(api_dict, "subscribers", subscribers, topic_types)
4242
self.add_api(api_dict, "services", services, service_types)
4343
#TODO actions
44-
44+
4545
#print "api_dict=\n", api_dict
4646
api = self.dict_to_msg(api_dict)
4747
#print "api=\n", api

‎atf_recorder_plugins/src/atf_recorder_plugins/plugin_resources.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from copy import copy
99
from re import findall
1010
from subprocess import check_output, CalledProcessError
11-
from atf_msgs.msg import *
11+
from atf_msgs.msg import Resources, IO, Network
1212
from atf_recorder import BagfileWriter
1313

1414

‎atf_status_server/scripts/atf_status_server_node.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import yaml
44
import rosparam
55

6-
from atf_msgs.msg import *
7-
from atf_status_server.srv import *
6+
from atf_msgs.msg import TestStatus, TestblockStatus
7+
from atf_status_server.srv import GetTestStatus, GetTestStatusResponse
88
from threading import Lock
99

1010

‎atf_test/scripts/application.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
#!/usr/bin/python
22
import unittest
3-
import yaml
4-
from subprocess import call
5-
63
import rospy
74
import rostest
8-
import rostopic
95
import tf
106
import math
117
from atf_recorder import RecordingManager
@@ -16,7 +12,7 @@ def __init__(self):
1612
self.testblock_small = RecordingManager('testblock_small')
1713
self.testblock_large = RecordingManager('testblock_large')
1814
self.testblock_all = RecordingManager('testblock_all')
19-
15+
2016
# native app code
2117
self.pub_freq = 100.0 # Hz
2218
self.br = tf.TransformBroadcaster()

0 commit comments

Comments
 (0)
Please sign in to comment.