Private
Public Access
1
0

at the point where the test is there and fails

No changes to the code yet, so we expected it to fail
This commit is contained in:
Sander Roosendaal
2019-01-24 16:28:53 +01:00
parent 5e39a1ec67
commit 0f3f9c1b2b
7 changed files with 253 additions and 166 deletions

View File

@@ -1225,7 +1225,10 @@ def handle_nonpainsled(f2, fileformat, summary=''):
try:
os.remove(f_to_be_deleted)
except:
os.remove(f_to_be_deleted + '.gz')
try:
os.remove(f_to_be_deleted + '.gz')
except:
pass
return (f2, summary, oarlength, inboard, fileformat)

View File

@@ -150,3 +150,20 @@ class SessionFactory(factory.DjangoModelFactory):
name = factory.LazyAttribute(lambda _: faker.word())
comment = faker.text()
@pytest.fixture(scope="session", autouse=True)
def cleanup(request):
def remove_test_files():
for filename in os.listdir('media/mailbox_attachments'):
path = os.path.join('media/mailbox_attachments/',filename)
if not os.path.isdir(path):
os.remove(path)
for filename in os.listdir('rowers/tests/testdata/temp'):
path = os.path.join('rowers/tests/testdata/temp/',filename)
if not os.path.isdir(path):
os.remove(path)
request.addfinalizer(remove_test_files)

213
rowers/tests/test_emails.py Normal file
View File

@@ -0,0 +1,213 @@
#from __future__ import print_function
from statements import *
class EmailUpload(TestCase):
def setUp(self):
redis_connection.publish('tasks','KILL')
u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u,gdproptin=True,
gdproptindate=timezone.now()
)
self.theadmin = UserFactory(is_staff=True)
self.rtheadmin = Rower.objects.create(user=self.theadmin,
birthdate = faker.profile()['birthdate'],
gdproptin=True,
gdproptindate=timezone.now(),
rowerplan='coach')
nu = datetime.datetime.now()
workoutsbox = Mailbox.objects.create(name='workouts')
workoutsbox.save()
failbox = Mailbox.objects.create(name='Failed')
failbox.save()
m = Message(mailbox=workoutsbox,
from_header = u.email,
subject = "run",
body = """
workout run
""")
m.save()
a2 = 'media/mailbox_attachments/colin3.csv'
copyfile('rowers/tests/testdata/emails/colin.csv',a2)
a = MessageAttachment(message=m,document=a2[6:])
a.save()
def tearDown(self):
for filename in os.listdir('media/mailbox_attachments'):
path = os.path.join('media/mailbox_attachments/',filename)
if not os.path.isdir(path):
try:
os.remove(path)
except (IOError,WindowsError):
pass
@patch('rowers.dataprep.create_engine')
@patch('rowers.polarstuff.get_polar_notifications')
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests)
@patch('rowers.c2stuff.requests.post', side_effect=mocked_requests)
def test_emailupload(
self, mocked_sqlalchemy,mocked_polar_notifications, mock_get, mock_post):
out = StringIO()
call_command('processemail', stdout=out,testing=True)
self.assertIn('Successfully processed email attachments',out.getvalue())
ws = Workout.objects.filter(name="run")
self.assertEqual(len(ws),1)
w = ws[0]
self.assertEqual(w.workouttype,'Run')
#@pytest.mark.django_db
class EmailTests(TestCase):
def setUp(self):
redis_connection.publish('tasks','KILL')
u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u,gdproptin=True,
gdproptindate=timezone.now()
)
self.theadmin = UserFactory(is_staff=True)
self.rtheadmin = Rower.objects.create(user=self.theadmin,
birthdate = faker.profile()['birthdate'],
gdproptin=True,
gdproptindate=timezone.now(),
rowerplan='coach')
nu = datetime.datetime.now()
workoutsbox = Mailbox.objects.create(name='workouts')
workoutsbox.save()
failbox = Mailbox.objects.create(name='Failed')
failbox.save()
for filename in os.listdir(u'rowers/tests/testdata/emails'):
m = Message(mailbox=workoutsbox,
from_header = u.email,
subject = filename,
body="""
---
workouttype: water
boattype: 4x
...
""")
m.save()
a2 = 'media/mailbox_attachments/'+filename
copyfile(u'rowers/tests/testdata/emails/'+filename,a2)
a = MessageAttachment(message=m,document=a2[6:])
a.save()
m = Message(mailbox=workoutsbox,
from_header = u.email,
subject = "3x(5min/2min)/r2 \r2",
body = """
workout water
""")
m.save()
a2 = 'media/mailbox_attachments/colin2.csv'
copyfile('rowers/tests/testdata/emails/colin.csv',a2)
a = MessageAttachment(message=m,document=a2[6:])
a.save()
m = Message(mailbox=workoutsbox,
from_header = self.theadmin.email,
subject = "johnsworkout",
body = """
user john
race 1
""")
m.save()
def tearDown(self):
for filename in os.listdir('media/mailbox_attachments'):
path = os.path.join('media/mailbox_attachments/',filename)
if not os.path.isdir(path):
try:
os.remove(path)
except (IOError,WindowsError):
pass
@patch('rowers.dataprep.create_engine')
@patch('rowers.polarstuff.get_polar_notifications')
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests)
@patch('rowers.c2stuff.requests.post', side_effect=mocked_requests)
def test_emailprocessing(
self, mocked_sqlalchemy,mocked_polar_notifications, mock_get, mock_post):
out = StringIO()
call_command('processemail', stdout=out,testing=True)
self.assertIn('Successfully processed email attachments',out.getvalue())
class EmailAdminUpload(TestCase):
def setUp(self):
redis_connection.publish('tasks','KILL')
u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u,gdproptin=True,
gdproptindate=timezone.now()
)
self.theadmin = UserFactory(is_staff=True)
self.rtheadmin = Rower.objects.create(user=self.theadmin,
birthdate = faker.profile()['birthdate'],
gdproptin=True,
gdproptindate=timezone.now(),
rowerplan='coach')
nu = datetime.datetime.now()
workoutsbox = Mailbox.objects.create(name='workouts')
workoutsbox.save()
failbox = Mailbox.objects.create(name='Failed')
failbox.save()
m = Message(mailbox=workoutsbox,
from_header = self.theadmin.email,
subject = "johnsworkout",
body = """
user john
race 1
""")
m.save()
a2 = 'media/mailbox_attachments/minute.csv'
copyfile('rowers/tests/testdata/minute.csv',a2)
a = MessageAttachment(message=m,document=a2[6:])
a.save()
def tearDown(self):
for filename in os.listdir('media/mailbox_attachments'):
path = os.path.join('media/mailbox_attachments/',filename)
if not os.path.isdir(path):
try:
os.remove(path)
except (IOError,WindowsError):
pass
@patch('rowers.dataprep.create_engine')
@patch('rowers.polarstuff.get_polar_notifications')
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests)
@patch('rowers.c2stuff.requests.post', side_effect=mocked_requests)
def test_email_admin_upload(
self, mocked_sqlalchemy,mocked_polar_notifications, mock_get, mock_post):
out = StringIO()
call_command('processemail', stdout=out,testing=True)
self.assertIn('Successfully processed email attachments',out.getvalue())
ws = Workout.objects.filter(name="johnsworkout")
if not len(ws):
for w in Workout.objects.all():
print w
self.assertEqual(len(ws),1)
w = ws[0]
self.assertEqual(w.user.user.username,u'john')

View File

@@ -1,164 +0,0 @@
#from __future__ import print_function
import pytest
pytestmark = pytest.mark.django_db
from bs4 import BeautifulSoup
import re
from nose_parameterized import parameterized
from django.test import TestCase, Client,override_settings
from django.core.management import call_command
from django.utils.six import StringIO
from django.test.client import RequestFactory
from rowers.views import checkworkoutuser,c2_open
from rowers.models import Workout, User, Rower, WorkoutForm,RowerForm,GraphImage
from rowers.forms import DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail
import rowers.plots as plots
import rowers.interactiveplots as iplots
import datetime
from rowingdata import rowingdata as rdata
from rowingdata import rower as rrower
from django.utils import timezone
from rowers.rows import handle_uploaded_file
from django.core.files.uploadedfile import SimpleUploadedFile
from time import strftime,strptime,mktime,time,daylight
import os
from rowers.tasks import handle_makeplot
from rowers.utils import serialize_list,deserialize_list
from rowers.utils import NoTokenError
from shutil import copyfile
from nose.tools import assert_true
from mock import Mock, patch
from minimocktest import MockTestCase
import pandas as pd
import rowers.c2stuff as c2stuff
import json
import numpy as np
from rowers import urls
from rowers.views import error500_view,error404_view,error400_view,error403_view
from rowers.dataprep import delete_strokedata
from redis import StrictRedis
redis_connection = StrictRedis()
from rowers.tests.test_imports import mocked_requests
from django_mailbox.models import Mailbox,MessageAttachment,Message
from rowers.tests.mocks import mocked_sqlalchemy
@pytest.mark.django_db
class UploadTests(TestCase):
def setUp(self):
redis_connection.publish('tasks','KILL')
u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u,gdproptin=True,
gdproptindate=timezone.now(),
getemailnotifications = False,
)
nu = datetime.datetime.now()
workoutsbox = Mailbox.objects.create(name='workouts')
workoutsbox.save()
failbox = Mailbox.objects.create(name='Failed')
failbox.save()
m = Message(mailbox=workoutsbox,
from_header = u.email,
subject = "3x(5min/2min)/r2 \r2",
body = """
workout run
""")
m.save()
a2 = 'media/mailbox_attachments/colin2.csv'
copyfile('rowers/tests/testdata/emails/colin.csv',a2)
a = MessageAttachment(message=m,document=a2[6:])
a.save()
def tearDown(self):
for filename in os.listdir('media/mailbox_attachments'):
path = os.path.join('media/mailbox_attachments/',filename)
if not os.path.isdir(path):
try:
os.remove(path)
except (IOError,WindowsError):
pass
@patch('requests.get', side_effect=mocked_requests)
def test_email_workouttype(self, mock_get):
out = StringIO()
call_command('processemail', stdout=out, testing=True)
w = Workout.objects.get(id=1)
self.assertEqual(w.workouttype,'Run')
#@pytest.mark.django_db
class EmailTests(TestCase):
def setUp(self):
redis_connection.publish('tasks','KILL')
u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u,gdproptin=True,
gdproptindate=timezone.now()
)
nu = datetime.datetime.now()
workoutsbox = Mailbox.objects.create(name='workouts')
workoutsbox.save()
failbox = Mailbox.objects.create(name='Failed')
failbox.save()
for filename in os.listdir(u'rowers/tests/testdata/emails'):
m = Message(mailbox=workoutsbox,
from_header = u.email,
subject = filename,
body="""
---
workouttype: water
boattype: 4x
...
""")
m.save()
a2 = 'media/mailbox_attachments/'+filename
copyfile(u'rowers/tests/testdata/emails/'+filename,a2)
a = MessageAttachment(message=m,document=a2[6:])
a.save()
m = Message(mailbox=workoutsbox,
from_header = u.email,
subject = "3x(5min/2min)/r2 \r2",
body = """
workout water
""")
m.save()
a2 = 'media/mailbox_attachments/colin2.csv'
copyfile('rowers/tests/testdata/emails/colin.csv',a2)
a = MessageAttachment(message=m,document=a2[6:])
a.save()
def tearDown(self):
for filename in os.listdir('media/mailbox_attachments'):
path = os.path.join('media/mailbox_attachments/',filename)
if not os.path.isdir(path):
try:
os.remove(path)
except (IOError,WindowsError):
pass
@patch('rowers.dataprep.create_engine')
@patch('rowers.polarstuff.get_polar_notifications')
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests)
@patch('rowers.c2stuff.requests.post', side_effect=mocked_requests)
def test_emailprocessing(
self, mocked_sqlalchemy,mocked_polar_notifications, mock_get, mock_post):
out = StringIO()
call_command('processemail', stdout=out,testing=True)
self.assertIn('Successfully processed email attachments',out.getvalue())

18
rowers/tests/testdata/minute.csv vendored Normal file
View File

@@ -0,0 +1,18 @@
index,TimeStamp (sec), activityIdx, lapIdx, pointIdx, ElapsedTime (sec), Horizontal (meters), Stroke500mPace (sec/500m), Cadence (strokes/min), HRCur (bpm), Power (watts), Calories (kCal), Speed (m/sec), StrokeCount, StrokeDistance (meters), DriveLength (meters), DriveTime (ms), StrokeRecoveryTime (ms), WorkPerStroke (joules), AverageDriveForce (lbs), PeakDriveForce (lbs), DragFactor, ElapsedTimeAtDrive (sec), HorizontalAtDrive (meters), WorkoutType, IntervalType, WorkoutState, RowingState, WorkoutDurationType, WorkoutIntervalCount, Cadence (stokes/min), AverageBoatSpeed (m/s), AverageDriveForce (N), PeakDriveForce (N), Stroke Number,cum_dist,originalvelo
0,1548096824.0,0,0,0,4.18,20.3,93.3506356168139,48,86,436.5048883104004,1,5.3820000000000014,4,6.79,1.36,500,560,0,142.4,222.0,115,0.0,0.0,5,0,1,1,0,0,48.0,5.353892279687333,633.4265280000002,987.50484,2,20.3,5.353892279687333
1,1548096826.7910905,0,0,1,6.94,35.9,89.62484388832563,45,87,496.4816892895996,2,5.6179999999999986,6,8.15,1.42,490,730,0,142.3,238.8,113,4.18,20.3,5,0,1,1,0,0,45.0,5.587840858292355,632.9817059999998,1062.2349359999996,4,35.9,5.587840858292355
2,1548096837.108201,0,0,2,17.27,94.5,88.81577825856567,41,96,504.2099300644,8,5.647,13,8.19,1.36,480,770,0,144.0,242.9,112,6.94,35.9,5,0,1,1,0,0,41.0,5.616084465910367,640.54368,1080.4726380000004,11,94.5,5.616084465910367
3,1548096839.086601,0,0,3,19.25,105.7,88.96490450858349,41,99,504.2099300644,8,5.647,14,8.19,1.39,480,750,0,142.0,244.6,112,17.27,94.5,5,0,1,1,0,0,41.0,5.616084465910367,631.64724,1088.034612,12,105.7,5.616084465910367
4,1548096842.8994308,0,0,4,23.07,127.2,89.27586762584984,41,104,501.8029914016,11,5.638,17,8.12,1.36,470,760,0,143.6,251.4,112,19.25,105.7,5,0,1,1,0,0,41.0,5.607267018055401,638.7643919999998,1118.282508,15,127.2,5.607267018055401
5,1548096847.161281,0,0,5,27.31,151.1,89.89298681607487,41,110,489.62041712640007,14,5.5920000000000005,20,8.11,1.36,490,760,0,133.6,231.0,111,23.07,127.2,5,0,1,1,0,0,41.0,5.561116672227786,594.282192,1027.53882,18,151.1,5.561116672227786
6,1548096850.1555116,0,0,6,30.31,167.8,90.29743877919012,41,112,480.4843223404,15,5.557,22,8.47,1.39,490,820,0,143.9,234.4,111,27.31,151.1,5,0,1,1,0,0,41.0,5.526693931690064,640.0988580000002,1042.662768,20,167.8,5.526693931690064
7,1548096853.1276512,0,0,7,33.28,184.3,90.39988760767656,40,113,484.1249963508004,17,5.5710000000000015,24,8.24,1.36,490,800,0,138.4,254.1,111,30.31,167.8,5,0,1,1,0,0,40.0,5.540780141843972,615.633648,1130.292702,22,184.3,5.540780141843972
8,1548096856.0643613,0,0,8,36.21,200.5,90.61884542605642,41,115,477.8950465044004,18,5.5470000000000015,26,8.1,1.36,480,770,0,135.5,227.6,111,33.28,184.3,5,0,1,1,0,0,41.0,5.516936996579499,602.7338100000002,1012.4148720000001,24,200.5,5.516936996579499
9,1548096859.0091813,0,0,9,39.17,216.8,91.12253138918642,41,116,468.9058576384001,20,5.5120000000000005,28,8.1,1.36,500,770,0,132.7,232.4,111,36.21,200.5,5,0,1,1,0,0,41.0,5.483057352779911,590.2787940000002,1033.766328,26,216.8,5.483057352779911
10,1548096862.008181,0,0,10,42.16,233.2,91.7159092344983,40,117,462.8074479616,21,5.488,30,8.24,1.33,470,810,0,130.6,218.9,111,39.17,216.8,5,0,1,1,0,0,40.0,5.459111256687411,580.937532,973.715358,28,233.2,5.459111256687411
11,1548096866.4157307,0,0,11,46.57,257.2,92.13100908526968,41,118,452.5120589444,24,5.447,33,7.89,1.33,470,760,0,133.0,227.5,111,42.16,233.2,5,0,1,1,0,0,41.0,5.417705060136527,591.61326,1011.97005,31,257.2,5.417705060136527
12,1548096869.206501,0,0,12,49.36,272.4,92.30771272248859,43,118,452.7613310976001,25,5.448,35,7.6,1.3,460,710,0,131.0,208.0,111,46.57,257.2,5,0,1,1,0,0,43.0,5.418879375745096,582.71682,925.2297599999999,33,272.4,5.418879375745096
13,1548096872.1160307,0,0,13,52.27,288.2,92.39395707918017,42,119,451.2670704864,26,5.442,37,7.96,1.33,480,770,0,132.8,222.3,111,49.36,272.4,5,0,1,1,0,0,42.0,5.413598960589,590.7236160000001,988.839306,35,288.2,5.413598960589
14,1548096875.085701,0,0,14,55.24,304.2,92.99397114111812,41,119,442.6160316004,28,5.407,39,8.02,1.3,480,790,0,128.7,230.0,111,52.27,288.2,5,0,1,1,0,0,41.0,5.378657487091222,572.485914,1023.0906,37,304.2,5.378657487091222
15,1548096878.0252109,0,0,15,58.2,319.9,94.06681282362852,41,119,426.8444927264001,29,5.3420000000000005,41,7.95,1.27,490,820,0,123.4,213.1,111,55.24,304.2,5,0,1,1,0,0,41.0,5.314061005420342,548.910348,947.9156820000001,39,319.9,5.314061005420342
16,1548096880.0612912,0,0,16,60.0,329.3,95.37595742617708,40,120,409.81691239999986,30,5.27,42,8.03,1.27,490,840,0,110.4,193.6,111,58.2,319.9,5,0,10,0,0,0,40.0,5.242738806752646,491.08348800000016,861.175392,40,329.3,5.242738806752646
1 index TimeStamp (sec) activityIdx lapIdx pointIdx ElapsedTime (sec) Horizontal (meters) Stroke500mPace (sec/500m) Cadence (strokes/min) HRCur (bpm) Power (watts) Calories (kCal) Speed (m/sec) StrokeCount StrokeDistance (meters) DriveLength (meters) DriveTime (ms) StrokeRecoveryTime (ms) WorkPerStroke (joules) AverageDriveForce (lbs) PeakDriveForce (lbs) DragFactor ElapsedTimeAtDrive (sec) HorizontalAtDrive (meters) WorkoutType IntervalType WorkoutState RowingState WorkoutDurationType WorkoutIntervalCount Cadence (stokes/min) AverageBoatSpeed (m/s) AverageDriveForce (N) PeakDriveForce (N) Stroke Number cum_dist originalvelo
2 0 1548096824.0 0 0 0 4.18 20.3 93.3506356168139 48 86 436.5048883104004 1 5.3820000000000014 4 6.79 1.36 500 560 0 142.4 222.0 115 0.0 0.0 5 0 1 1 0 0 48.0 5.353892279687333 633.4265280000002 987.50484 2 20.3 5.353892279687333
3 1 1548096826.7910905 0 0 1 6.94 35.9 89.62484388832563 45 87 496.4816892895996 2 5.6179999999999986 6 8.15 1.42 490 730 0 142.3 238.8 113 4.18 20.3 5 0 1 1 0 0 45.0 5.587840858292355 632.9817059999998 1062.2349359999996 4 35.9 5.587840858292355
4 2 1548096837.108201 0 0 2 17.27 94.5 88.81577825856567 41 96 504.2099300644 8 5.647 13 8.19 1.36 480 770 0 144.0 242.9 112 6.94 35.9 5 0 1 1 0 0 41.0 5.616084465910367 640.54368 1080.4726380000004 11 94.5 5.616084465910367
5 3 1548096839.086601 0 0 3 19.25 105.7 88.96490450858349 41 99 504.2099300644 8 5.647 14 8.19 1.39 480 750 0 142.0 244.6 112 17.27 94.5 5 0 1 1 0 0 41.0 5.616084465910367 631.64724 1088.034612 12 105.7 5.616084465910367
6 4 1548096842.8994308 0 0 4 23.07 127.2 89.27586762584984 41 104 501.8029914016 11 5.638 17 8.12 1.36 470 760 0 143.6 251.4 112 19.25 105.7 5 0 1 1 0 0 41.0 5.607267018055401 638.7643919999998 1118.282508 15 127.2 5.607267018055401
7 5 1548096847.161281 0 0 5 27.31 151.1 89.89298681607487 41 110 489.62041712640007 14 5.5920000000000005 20 8.11 1.36 490 760 0 133.6 231.0 111 23.07 127.2 5 0 1 1 0 0 41.0 5.561116672227786 594.282192 1027.53882 18 151.1 5.561116672227786
8 6 1548096850.1555116 0 0 6 30.31 167.8 90.29743877919012 41 112 480.4843223404 15 5.557 22 8.47 1.39 490 820 0 143.9 234.4 111 27.31 151.1 5 0 1 1 0 0 41.0 5.526693931690064 640.0988580000002 1042.662768 20 167.8 5.526693931690064
9 7 1548096853.1276512 0 0 7 33.28 184.3 90.39988760767656 40 113 484.1249963508004 17 5.5710000000000015 24 8.24 1.36 490 800 0 138.4 254.1 111 30.31 167.8 5 0 1 1 0 0 40.0 5.540780141843972 615.633648 1130.292702 22 184.3 5.540780141843972
10 8 1548096856.0643613 0 0 8 36.21 200.5 90.61884542605642 41 115 477.8950465044004 18 5.5470000000000015 26 8.1 1.36 480 770 0 135.5 227.6 111 33.28 184.3 5 0 1 1 0 0 41.0 5.516936996579499 602.7338100000002 1012.4148720000001 24 200.5 5.516936996579499
11 9 1548096859.0091813 0 0 9 39.17 216.8 91.12253138918642 41 116 468.9058576384001 20 5.5120000000000005 28 8.1 1.36 500 770 0 132.7 232.4 111 36.21 200.5 5 0 1 1 0 0 41.0 5.483057352779911 590.2787940000002 1033.766328 26 216.8 5.483057352779911
12 10 1548096862.008181 0 0 10 42.16 233.2 91.7159092344983 40 117 462.8074479616 21 5.488 30 8.24 1.33 470 810 0 130.6 218.9 111 39.17 216.8 5 0 1 1 0 0 40.0 5.459111256687411 580.937532 973.715358 28 233.2 5.459111256687411
13 11 1548096866.4157307 0 0 11 46.57 257.2 92.13100908526968 41 118 452.5120589444 24 5.447 33 7.89 1.33 470 760 0 133.0 227.5 111 42.16 233.2 5 0 1 1 0 0 41.0 5.417705060136527 591.61326 1011.97005 31 257.2 5.417705060136527
14 12 1548096869.206501 0 0 12 49.36 272.4 92.30771272248859 43 118 452.7613310976001 25 5.448 35 7.6 1.3 460 710 0 131.0 208.0 111 46.57 257.2 5 0 1 1 0 0 43.0 5.418879375745096 582.71682 925.2297599999999 33 272.4 5.418879375745096
15 13 1548096872.1160307 0 0 13 52.27 288.2 92.39395707918017 42 119 451.2670704864 26 5.442 37 7.96 1.33 480 770 0 132.8 222.3 111 49.36 272.4 5 0 1 1 0 0 42.0 5.413598960589 590.7236160000001 988.839306 35 288.2 5.413598960589
16 14 1548096875.085701 0 0 14 55.24 304.2 92.99397114111812 41 119 442.6160316004 28 5.407 39 8.02 1.3 480 790 0 128.7 230.0 111 52.27 288.2 5 0 1 1 0 0 41.0 5.378657487091222 572.485914 1023.0906 37 304.2 5.378657487091222
17 15 1548096878.0252109 0 0 15 58.2 319.9 94.06681282362852 41 119 426.8444927264001 29 5.3420000000000005 41 7.95 1.27 490 820 0 123.4 213.1 111 55.24 304.2 5 0 1 1 0 0 41.0 5.314061005420342 548.910348 947.9156820000001 39 319.9 5.314061005420342
18 16 1548096880.0612912 0 0 16 60.0 329.3 95.37595742617708 40 120 409.81691239999986 30 5.27 42 8.03 1.27 490 840 0 110.4 193.6 111 58.2 319.9 5 0 10 0 0 0 40.0 5.242738806752646 491.08348800000016 861.175392 40 329.3 5.242738806752646

Binary file not shown.

View File

@@ -2502,7 +2502,7 @@
</Trackpoint>
</Track>
</Lap>
<Notes>&lt;Element 'Notes' at 0x13f67128&gt;</Notes>
<Notes>&lt;Element 'Notes' at 0x14011cc0&gt;</Notes>
</Activity>
</Activities>
<Creator>