def test_values(self): with NamedTemporaryFile() as f: bootstrap_file(f, m(V), '5') bootstrap_file(f, m(V), '5', mm(DEV), configurator=default) for file in ('24696157869', '24696160481', '24696163486'): args, db = bootstrap_file(f, m(V), '5', mm(DEV), 'monitor', mm(FAST), 'data/test/source/personal/[email protected]_%s.fit' % file) monitor(args, db) # run('sqlite3 %s ".dump"' % f.name, shell=True) run_pipeline(db, PipelineType.STATISTIC, force=True, start='2018-01-01', n_cpu=1) run('sqlite3 %s ".dump"' % f.name, shell=True) with db.session_context() as s: mjournals = s.query(MonitorJournal).order_by(MonitorJournal.start).all() assert mjournals[2].start == to_time('2018-09-06 15:06:00'), mjournals[2].start print(mjournals[2].fit_file) # steps summary = s.query(StatisticJournal).join(StatisticName). \ filter(StatisticJournal.time >= local_date_to_time('2018-09-06'), StatisticJournal.time < local_date_to_time('2018-09-07'), StatisticName.owner == MonitorCalculator, StatisticName.name == DAILY_STEPS).one() # connect has 12757 for this date, self.assertEqual(summary.value, 12757) # heart rate summary = s.query(StatisticJournal).join(StatisticName). \ filter(StatisticJournal.time >= local_date_to_time('2018-09-06'), StatisticJournal.time < local_date_to_time('2018-09-07'), StatisticName.owner == MonitorCalculator, StatisticName.name == REST_HR).one() self.assertEqual(summary.value, 45)
def generic_bug(self, files): with NamedTemporaryFile() as f: args, db = bootstrap_file(f, m(V), '5') bootstrap_file(f, m(V), '5', mm(DEV), configurator=default) for file in files: args, db = bootstrap_file( f, m(V), '5', mm(DEV), 'monitor', mm(FAST), 'data/test/source/personal/[email protected]_%s.fit' % file) monitor(args, db) # run('sqlite3 %s ".dump"' % f.name, shell=True) run_pipeline(db, PipelineType.STATISTIC, force=True, start='2018-01-01', n_cpu=1) # run('sqlite3 %s ".dump"' % f.name, shell=True) with db.session_context() as s: # steps summary = s.query(StatisticJournal).join(StatisticName). \ filter(StatisticJournal.time >= local_date_to_time('2018-10-07'), StatisticJournal.time < local_date_to_time('2018-10-08'), StatisticName.owner == MonitorCalculator, StatisticName.name == DAILY_STEPS).one() # connect has 3031 for this date. self.assertEqual(summary.value, 3031)
def test_segment_bug(self): with NamedTemporaryFile() as f: args, db = bootstrap_file(f, m(V), '5', mm(DEV), configurator=default) paths = ['/home/andrew/archive/fit/bike/2016-07-27-pm-z4.fit'] run_pipeline(db, PipelineType.ACTIVITY, paths=paths, force=True)
def test_michael(self): with NamedTemporaryFile() as f: bootstrap_file(f, m(V), '5') bootstrap_file(f, m(V), '5', mm(DEV), configurator=default) args, db = bootstrap_file(f, m(V), '5', mm(DEV), 'activities', mm(FAST), 'data/test/source/other/2019-05-09-051352-Running-iWatchSeries3.fit') activities(args, db) # run('sqlite3 %s ".dump"' % f.name, shell=True) run_pipeline(db, PipelineType.STATISTIC, n_cpu=1) # run('sqlite3 %s ".dump"' % f.name, shell=True) with db.session_context() as s: self.__assert_basic_stats(s)
def test_florian(self): with NamedTemporaryFile() as f: bootstrap_file(f, m(V), '5') bootstrap_file(f, m(V), '5', mm(DEV), configurator=default) args, db = bootstrap_file(f, m(V), '5', mm(DEV), 'activities', mm(FAST), 'data/test/source/private/florian.fit') activities(args, db) # run('sqlite3 %s ".dump"' % f.name, shell=True) run_pipeline(db, PipelineType.STATISTIC, n_cpu=1) # run('sqlite3 %s ".dump"' % f.name, shell=True) with db.session_context() as s: self.__assert_basic_stats(s)
def test_920(self): for src in '920xt-2019-05-16_19-42-54.fit', '920xt-2019-05-16_19-42-54.fit': with NamedTemporaryFile() as f: bootstrap_file(f, m(V), '5') bootstrap_file(f, m(V), '5', mm(DEV), configurator=default) args, db = bootstrap_file(f, m(V), '5', mm(DEV), 'activities', mm(FAST), f'data/test/source/other/{src}') activities(args, db) # run('sqlite3 %s ".dump"' % f.name, shell=True) run_pipeline(db, PipelineType.STATISTIC, n_cpu=1) # run('sqlite3 %s ".dump"' % f.name, shell=True) with db.session_context() as s: self.__assert_basic_stats(s)
def test_activities(self): with NamedTemporaryFile() as f: args, db = bootstrap_file(f, m(V), '5') bootstrap_file(f, m(V), '5', mm(DEV), configurator=default) args, db = bootstrap_file(f, m(V), '5', 'constants', '--set', 'FTHR.%', '154') constants(args, db) args, db = bootstrap_file(f, m(V), '5', 'constants', 'FTHR.%') constants(args, db) args, db = bootstrap_file(f, m(V), '5', 'constants', '--set', 'SRTM1.dir', '/home/andrew/archive/srtm1') constants(args, db) args, db = bootstrap_file( f, m(V), '5', mm(DEV), 'activities', mm(FAST), 'data/test/source/personal/2018-08-27-rec.fit') activities(args, db) # run('sqlite3 %s ".dump"' % f.name, shell=True) run_pipeline(db, PipelineType.STATISTIC, force=True, start='2018-01-01', n_cpu=1) # run('sqlite3 %s ".dump"' % f.name, shell=True) with db.session_context() as s: n_raw = s.query(count(StatisticJournalFloat.id)). \ join(StatisticName). \ filter(StatisticName.name == RAW_ELEVATION).scalar() self.assertEqual(2099, n_raw) n_fix = s.query(count(StatisticJournalFloat.id)). \ join(StatisticName). \ filter(StatisticName.name == ELEVATION).scalar() self.assertEqual(2099, n_fix) n = s.query(count(StatisticJournal.id)).scalar() self.assertEqual(23655, n) journal = s.query(ActivityJournal).one() self.assertNotEqual(journal.start, journal.finish)
def test_heart_alarms(self): with NamedTemporaryFile() as f: bootstrap_file(f, m(V), '5') bootstrap_file(f, m(V), '5', mm(DEV), configurator=default) args, db = bootstrap_file(f, m(V), '5', mm(DEV), 'activities', mm(FAST), 'data/test/source/personal/2016-07-19-mpu-s-z2.fit') activities(args, db) # run('sqlite3 %s ".dump"' % f.name, shell=True) run_pipeline(db, PipelineType.STATISTIC, n_cpu=1) # run('sqlite3 %s ".dump"' % f.name, shell=True) with db.session_context() as s: stat = s.query(StatisticJournal). \ join(StatisticName). \ filter(StatisticName.name == ACTIVE_DISTANCE).one() self.assertGreater(stat.value, 30000)
def test_monitor(self): with NamedTemporaryFile() as f: args, db = bootstrap_file(f, m(V), '5') bootstrap_file(f, m(V), '5', mm(DEV), configurator=default) args, db = bootstrap_file(f, m(V), '5', mm(DEV), 'monitor', mm(FAST), 'data/test/source/personal/25822184777.fit') monitor(args, db) # run('sqlite3 %s ".dump"' % f.name, shell=True) run_pipeline(db, PipelineType.STATISTIC, force=True, start='2018-01-01') # run('sqlite3 %s ".dump"' % f.name, shell=True) with db.session_context() as s: n = s.query(func.count(StatisticJournal.id)).scalar() # self.assertEqual(n, 111) self.assertEqual(n, 108) # why? mjournal = s.query(MonitorJournal).one() self.assertNotEqual(mjournal.start, mjournal.finish)
def test_empty_data(self): with NamedTemporaryFile() as f: args, db = bootstrap_file(f, m(V), '5') bootstrap_file(f, m(V), '5', mm(DEV), configurator=default) args, db = bootstrap_file( f, m(V), '5', mm(DEV), 'monitor', mm(FAST), 'data/test/source/other/37140810636.fit') monitor(args, db) # run('sqlite3 %s ".dump"' % f.name, shell=True) run_pipeline(db, PipelineType.STATISTIC, n_cpu=1) # run('sqlite3 %s ".dump"' % f.name, shell=True) with db.session_context() as s: n = s.query(func.count(StatisticJournal.id)).scalar() self.assertEqual(n, 20) mjournal = s.query(MonitorJournal).one() self.assertNotEqual(mjournal.start, mjournal.finish)
def rebuild(db): run_pipeline(db, PipelineType.STATISTIC, force=True, like=long_cls(KitCalculator))