in otava/importer.py [0:0]
def fetch_data(self, test_conf: TestConfig, selector: DataSelector = DataSelector()) -> Series:
if not isinstance(test_conf, JsonTestConfig):
raise ValueError("Expected JsonTestConfig")
# TODO: refactor. THis is copy pasted from CSV importer
since_time = selector.since_time
until_time = selector.until_time
if since_time.timestamp() > until_time.timestamp():
raise DataImportError(
f"Invalid time range: ["
f"{format_timestamp(int(since_time.timestamp()))}, "
f"{format_timestamp(int(until_time.timestamp()))}]"
)
time = []
data = OrderedDict()
metrics = OrderedDict()
attributes = OrderedDict()
for name in self.fetch_all_metric_names(test_conf):
# Ignore metrics if selector.metrics is not None and name is not in selector.metrics
if selector.metrics is not None and name not in selector.metrics:
continue
data[name] = []
attr_names = self.fetch_all_attribute_names(test_conf)
for name in attr_names:
attributes[name] = []
# If the user specified a branch, only include results from that branch.
# Otherwise if the test config specifies a branch, only include results from that branch.
# Else include all results.
branch = None
if selector.branch:
branch = selector.branch
elif test_conf.base_branch:
branch = test_conf.base_branch
objs = self.inputfile(test_conf)
list_of_json_obj = []
for o in objs:
if branch and o["attributes"]["branch"] != branch:
continue
list_of_json_obj.append(o)
for result in list_of_json_obj:
time.append(result["timestamp"])
for metric in result["metrics"]:
# Skip metrics not in selector.metrics if selector.metrics is enabled
if metric["name"] not in data:
continue
data[metric["name"]].append(metric["value"])
metrics[metric["name"]] = Metric(1, 1.0)
for a in attr_names:
attributes[a] = [o["attributes"][a] for o in list_of_json_obj]
# Leave last n points:
time = time[-selector.last_n_points :]
tmp = data
data = {}
for k, v in tmp.items():
data[k] = v[-selector.last_n_points :]
tmp = attributes
attributes = {}
for k, v in tmp.items():
attributes[k] = v[-selector.last_n_points :]
return Series(
test_conf.name,
branch=None,
time=time,
metrics=metrics,
data=data,
attributes=attributes,
)