diff options
Diffstat (limited to 'test/navigation/script-capi/test-map-viewer-control-capi.py')
-rwxr-xr-x | test/navigation/script-capi/test-map-viewer-control-capi.py | 177 |
1 files changed, 124 insertions, 53 deletions
diff --git a/test/navigation/script-capi/test-map-viewer-control-capi.py b/test/navigation/script-capi/test-map-viewer-control-capi.py index 47da06d..4f70ca8 100755 --- a/test/navigation/script-capi/test-map-viewer-control-capi.py +++ b/test/navigation/script-capi/test-map-viewer-control-capi.py @@ -6,8 +6,9 @@ * SPDX-License-Identifier: MPL-2.0 * * \copyright Copyright (C) 2015, Mentor Graphics +* \copyright Copyright (C) 2017, PSA Group * -* \file test-map-viewer-control.py +* \file test-map-viewer-control-capi.py * * \brief This simple test shows how the mapviewer * could be easily tested using a python script @@ -32,8 +33,12 @@ import gobject import dbus.mainloop.glib import time from dltTrigger import * -#import pdb -#pdb.set_trace() +from xml.dom.minidom import parse +import xml.dom.minidom +import argparse +import sys +import errno +#import pdb; pdb.set_trace() #name of the test test_name = "map viewer" @@ -41,6 +46,8 @@ test_name = "map viewer" #constants as defined in the Navigation API LATITUDE = 0x00a0 LONGITUDE = 0x00a1 +MAPVIEWER_MAX = 0x0041 +MAPVIEWER_MIN = 0x0040 MAIN_MAP = 0x0010 SPLIT_SCREEN = 0x0011 @@ -48,56 +55,123 @@ SPLIT_SCREEN = 0x0011 #constants used by the script HORIZONTAL_SIZE = 800 VERTICAL_SIZE = 480 -TIME_OUT = 10000 -MIN_SCALE = 0 -MAX_SCALE = 21 +TIME_OUT = 20000 +INIT_SCALE=2 +TEST_STEP_START=0 +TEST_STEP_SCALE=1 +TEST_STEP_ROTATE=2 + +# List of coordinates +LATITUDE = list() +LONGITUDE = list() +ALTITUDE = list() +COUNTRY_STRING = list() +CITY_STRING = list() +STREET_STRING = list() +HOUSE_NUMBER_STRING = list() def mapviewer_mapViewScaleChanged_handler(mapViewInstanceHandle,scale,isMinMax): global g_scale + global step new_scale=int(scale) print("Scale: "+str(new_scale)) print('Is min max: '+str(int(isMinMax))) - time.sleep(0.25) - if g_scale > new_scale and new_scale !=MIN_SCALE: - print("Zoom in") - g_scale=new_scale - MapViewerControl_interface.setMapViewScaleByDelta( \ - dbus.UInt32(sessionhandle), \ - dbus.UInt32(mapviewerhandle), \ - dbus.Int16(1)) - else: - if new_scale < MAX_SCALE: - print("Zoom out") + if step ==TEST_STEP_SCALE: + time.sleep(0.25) + if g_scale > new_scale and isMinMax !=MAPVIEWER_MIN: + print("Zoom in") g_scale=new_scale MapViewerControl_interface.setMapViewScaleByDelta( \ dbus.UInt32(sessionhandle), \ dbus.UInt32(mapviewerhandle), \ dbus.Int16(-1)) else: - print 'Test PASSED' - MapViewerControl_interface.releaseMapViewInstance( \ - dbus.UInt32(sessionhandle), \ - dbus.UInt32(mapviewerhandle)) - session_interface.deleteSession(sessionhandle) - exit() + if isMinMax !=MAPVIEWER_MAX: + print("Zoom out") + g_scale=new_scale + MapViewerControl_interface.setMapViewScaleByDelta( \ + dbus.UInt32(sessionhandle), \ + dbus.UInt32(mapviewerhandle), \ + dbus.Int16(1)) + else: + print('Test scale PASSED') + next_step() #timeout def timeout(): - print 'Timeout Expired' - print '\nTest FAILED' + print('Timeout Expired') + print ('\nTest FAILED') exit() + def exit(): + MapViewerControl_interface.releaseMapViewInstance( \ + dbus.UInt32(sessionhandle), \ + dbus.UInt32(mapviewerhandle)) + session_interface.deleteSession(sessionhandle) stopTrigger(test_name) loop.quit() -print '\n--------------------------' -print 'MapViewerControl Test' -print '--------------------------\n' +def next_step(): + global step + if step == TEST_STEP_START: + step=TEST_STEP_SCALE + print ('Test scale') + MapViewerControl_interface.setMapViewScale( \ + dbus.UInt32(sessionhandle), \ + dbus.UInt32(mapviewerhandle), \ + dbus.UInt16(INIT_SCALE)) + else: + if step ==TEST_STEP_SCALE: + step=TEST_STEP_ROTATE + print ('Test rotate') + MapViewerControl_interface.setMapViewScale( \ + dbus.UInt32(sessionhandle), \ + dbus.UInt32(mapviewerhandle), \ + dbus.UInt16(INIT_SCALE)) + exit() + else: + if step ==TEST_STEP_ROTATE: + exit() + +print('\n--------------------------') +print('MapViewerControl Test') +print('--------------------------\n') + +parser = argparse.ArgumentParser(description='Map Viewer Test for navigation PoC and FSA.') +parser.add_argument('-l','--loc',action='store', dest='locations', help='List of locations in xml format') +parser.add_argument("-v", "--verbose", action='store_true',help='print the whole log messages') +args = parser.parse_args() + +if args.locations == None: + print('location file is missing') + sys.exit(1) +else: + try: + DOMTree = xml.dom.minidom.parse(args.locations) + except OSError as e: + if e.errno == errno.ENOENT: + print('file not exists') + sys.exit(1) + location_set = DOMTree.documentElement + +print("Area : %s" % location_set.getAttribute("area")) + +locations = location_set.getElementsByTagName("location") + +for location in location_set.getElementsByTagName("location"): + LATITUDE.append(location.getElementsByTagName("latitude")[0].childNodes[0].data) + LONGITUDE.append(location.getElementsByTagName("longitude")[0].childNodes[0].data) + ALTITUDE.append(0) + COUNTRY_STRING.append(location.getElementsByTagName("country")[0].childNodes[0].data) + CITY_STRING.append(location.getElementsByTagName("city")[0].childNodes[0].data) + STREET_STRING.append(location.getElementsByTagName("street")[0].childNodes[0].data) + HOUSE_NUMBER_STRING.append(location.getElementsByTagName("number")[0].childNodes[0].data) if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + #connect to session bus bus = dbus.SessionBus() @@ -105,21 +179,22 @@ bus.add_signal_receiver(mapviewer_mapViewScaleChanged_handler, \ dbus_interface = "org.genivi.navigation.mapviewer.MapViewerControl.v4_0", \ signal_name = "mapViewScaleChanged") + startTrigger(test_name) session = bus.get_object('org.genivi.navigation.mapviewer.Session.v4_0_Session','/Session') session_interface = dbus.Interface(session, dbus_interface='org.genivi.navigation.mapviewer.Session.v4_0') #get session handle -ret = session_interface.createSession(dbus.String('test mapviewer')) +ret = session_interface.createSession(dbus.String("test mapviewer")) sessionhandle=ret[1] -print 'Session handle: ' + str(sessionhandle) +print('Session handle: ' + str(sessionhandle)) sessionstatus = session_interface.getSessionStatus(dbus.UInt32(sessionhandle)); -print 'Session status: ' + str(sessionstatus) +print ('Session status: ' + str(sessionstatus)) sessionlist = session_interface.getAllSessions(); -print 'Active sessions = ' + str(len(sessionlist)) +print( 'Active sessions = ' + str(len(sessionlist))) MapViewerControl_obj = bus.get_object('org.genivi.navigation.mapviewer.MapViewerControl.v4_0_MapViewerControl','/MapViewerControl') MapViewerControl_interface = dbus.Interface(MapViewerControl_obj, dbus_interface='org.genivi.navigation.mapviewer.MapViewerControl.v4_0') @@ -131,22 +206,23 @@ ret = MapViewerControl_interface.createMapViewInstance( \ dbus.Int32(MAIN_MAP)) mapviewerhandle=ret[1] -print 'MapView handle: ' + str(mapviewerhandle) +print('MapView handle: ' + str(mapviewerhandle)) -# Bern -lat1 = 46.9479 -lon1 = 7.4446 -alt1 = 0 +index=0 + +lat1 = LATITUDE[index] +lon1 = LONGITUDE[index] +alt1 = ALTITUDE[index] time.sleep(2) -print 'Stop following the car position' +print ('Stop following the car position') MapViewerControl_interface.setFollowCarMode( \ dbus.UInt32(sessionhandle), \ dbus.UInt32(mapviewerhandle), \ dbus.Boolean(False)) -print 'Set center in Bern(' + str(lat1) + ',' + str(lon1) + ')' +print('Set center in '+ CITY_STRING[index]+ ' (' + str(lat1) + ',' + str(lon1) + ')') MapViewerControl_interface.setTargetPoint( \ dbus.UInt32(sessionhandle), \ dbus.UInt32(mapviewerhandle), \ @@ -160,16 +236,16 @@ lat2 = targetPoint[0] lon2 = targetPoint[1] alt2 = targetPoint[2] -print 'Get center -> (' + str(lat2) + ',' + str(lon2) + ')' +print ('Get center -> (' + str(lat2) + ',' + str(lon2) + ')' ) -if round(lat1,4) != round(lat2,4) : - print '\nTest Failed:' + str(round(lat1,4)) + '!=' + str(round(lat2,4)) + '\n' +if round(float(lat1),4) != round(float(lat2),4) : + print ('\nTest Failed:' + str(round(float(lat1),4)) + '!=' + str(round(float(lat2),4)) + '\n' ) -if round(lon1,4) != round(lon2,4) : - print '\nTest Failed:' + str(round(lon1,4)) + '!=' + str(round(lon2,4)) + '\n' +if round(float(lon1),4) != round(float(lon2),4) : + print('\nTest Failed:' + str(round(float(lon1),4)) + '!=' + str(round(float(lon2),4)) + '\n' ) -if round(alt1,4) != round(alt2,4) : - print '\nTest Failed:' + str(round(alt1,4)) + '!=' + str(round(alt2,4)) + '\n' +if round(float(alt1),4) != round(float(alt2),4) : + print('\nTest Failed:' + str(round(float(alt1),4)) + '!=' + str(round(float(alt2),4)) + '\n') ret=MapViewerControl_interface.getMapViewScale(dbus.UInt32(mapviewerhandle)) print('Scale: '+str(int(ret[0]))) @@ -177,16 +253,11 @@ print('Is min max: '+str(int(ret[1]))) g_scale=int(ret[0]) -time.sleep(0.25) - -print 'Zoom in' -MapViewerControl_interface.setMapViewScaleByDelta(dbus.UInt32(sessionhandle), dbus.UInt32(mapviewerhandle), dbus.Int16(1)) +step=TEST_STEP_START +next_step() #main loop gobject.timeout_add(TIME_OUT, timeout) loop = gobject.MainLoop() loop.run() - - - |