62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
import time
|
|
|
|
|
|
class MockDataSource:
|
|
samples = [
|
|
"8.8,119,0.32,California.LosAngeles,0",
|
|
"10.7,116,0.34,California.SanDiego,1",
|
|
"9.9,111,0.33,California.SanJose,2",
|
|
"8.9,113,0.329,California.Campbell,3",
|
|
"9.4,118,0.141,California.SanFrancisco,4"
|
|
]
|
|
|
|
def __init__(self, tb_name_prefix, table_count, infinity=True):
|
|
self.table_name_prefix = tb_name_prefix + "_"
|
|
self.table_count = table_count
|
|
self.max_rows = 10000000
|
|
self.current_ts = round(time.time() * 1000) - self.max_rows * 100
|
|
# [(tableId, tableName, values),]
|
|
self.data = self._init_data()
|
|
self.infinity = infinity
|
|
|
|
def _init_data(self):
|
|
lines = self.samples * (self.table_count // 5 + 1)
|
|
data = []
|
|
for i in range(self.table_count):
|
|
table_name = self.table_name_prefix + str(i)
|
|
data.append((i, table_name, lines[i])) # tableId, row
|
|
return data
|
|
|
|
def __iter__(self):
|
|
self.row = 0
|
|
if not self.infinity:
|
|
return iter(self._iter_data())
|
|
else:
|
|
return self
|
|
|
|
def __next__(self):
|
|
"""
|
|
next 1000 rows for each table.
|
|
return: {tableId:[row,...]}
|
|
"""
|
|
return self._iter_data()
|
|
|
|
def _iter_data(self):
|
|
ts = []
|
|
for _ in range(1000):
|
|
self.current_ts += 100
|
|
ts.append(str(self.current_ts))
|
|
# add timestamp to each row
|
|
# [(tableId, ["tableName,ts,current,voltage,phase,location,groupId"])]
|
|
result = []
|
|
for table_id, table_name, values in self.data:
|
|
rows = [table_name + ',' + t + ',' + values for t in ts]
|
|
result.append((table_id, rows))
|
|
return result
|
|
|
|
|
|
if __name__ == '__main__':
|
|
datasource = MockDataSource('t', 10, False)
|
|
for data in datasource:
|
|
print(data)
|