Last Modified 2007-01-02 by Karsten Fourmont

How to write a SyncML test case

The SyncML package contains a testing script to replay prerecorded test sessions. This allows the developers to check if changes break things for one particular phone. So it would be great to have test cases for as many phones as possible. Here's how to create one:

  • Preparations in Horde:
    • create a user "syncmltest" with password "syncmltest" in horde. If the user's already there first delete and then recreate to get a fresh start.
      • create a single test entry in the app you want to test (kronolith|nag|mnemo|turba). The entry should be named "server1" and the description should contain an umlaut for charset testing.
    • Preparations in the Client (PDA/Outlook/whatever)
      • Create a single testentry named "client1". A description containing an umlaut is also helpful. The database must only contain this single entry (so you might need to do a backup of your phone first)
    • Clean /tmp/sync: rm/tmp/sync/
    • Clean Horde SyncML Data. Login as user syncmltest and go to http:[yourinstall]/horde/services/portal/syncml.php. Use the button "Delete all SyncML Data" to delete all data for the syncmltest user.
    • Do a first sync run
    • In Horde: rename the "client1" entry to "client1s1" and create a new simple entry named "server2"
    • In the client: rename "server1" to "server1c1" and create a new simple entry named "client2"
    • Do second sync run
    • Do a third sync run. This should do nothing
    • In the client, delete server2
    • in the server, delete client2
    • do a fourth sync run
    • do a fifth sync run. This should do nothing.
    • The test itself is now finished. The database should now have two entries: client1s1 and server1c1
    • If your phone uses wbxml this must be converted to xml first: in /tmp/sync do a for a in *.wbxml; do wbxml2xml -m 0 -o `basename $a .wbxml`.xml $a; done
    • copy all *.xml in /tmp/sync into a directory under framework/syncml/tests with name testcase_[descriptionoftestcase]
    • in framework/syncml/tests do a ./testsync.php --dir=testcase_[descriptionoftestcase] to run the test. If it's not directly working, please notify the mailing list so we can make tha appropriate fixed for your phone.