Platform Team/Server Kit/sugar-unit: Difference between revisions

No edit summary
Line 1: Line 1:
== Summary ==
== Summary ==


Library and application that mimic regular sugar clients behaviour to help with testing [[Sugar Server Kit]] components and [[Sugar Server Kit]] based solutions.
'''{{Code|sugaroid}}''' is a library and application that mimics regular sugar client behaviour to help with testing [[Sugar Server Kit]] components and [[Sugar Server Kit]] based solutions.


== Using libsugaroid ==
== Using libsugaroid ==


Useful for python code that tests, e.g., the school server internals.
It is useful for python code that tests, e.g., the school server internals.


See sugar-server [http://git.sugarlabs.org/server/server/trees/master/tests/integration integration tests] for examples.
See sugar-server [http://git.sugarlabs.org/server/server/trees/master/tests/integration integration tests] for examples.
Line 11: Line 11:
== System testing scenarios ==
== System testing scenarios ==


In this mode, sugaroid application tries to behave as a regular host with sugar launched on it, including anti-thief features specific only for XO laptops.
In this mode, the sugaroid application tries to behave as a regular host with sugar launched on it, including anti-thief features specific only for XO laptops.


=== Scenario files ===
=== Scenario files ===


The regular way is writing scenarios, python scripts that need to be launched by {{Code|sugaroid}} program, i.e., such files need to have headers (you need to have path to source {{Code|sugaroid}} file in {{Code|PATH}} variable):
Regular use involves writing scenarios—python scripts that need to be launched by the {{Code|sugaroid}} program, i.e., such files need to have headers (you need to have the path to the source {{Code|sugaroid}} file in the {{Code|PATH}} environment variable):


  #!/bin/env sugaroid
  #!/bin/env sugaroid
Line 24: Line 24:
     pass
     pass


it will be launched by {{Code|sugaroid}} with passing execution context as a {{Code|libsugaroid.context.Context}} object and command-line arguments. The content of {{Code|main()}} function is exactly the scenario how sugaroid should behave.
It will be launched by {{Code|sugaroid}} by passing an execution context as a {{Code|libsugaroid.context.Context}} object along with command-line arguments. The content of the {{Code|main()}} function is exactly the scenario in which {{Code|sugaroid}} should behave.


=== Actions ===
=== Actions ===


The building blocks of sugaroid scenarios are actions. Actions are objects of classes inherited from {{Code|libsugaroid.context.Action}}. Action classes represent one particular aspect of sugar client behaviour, e.g., activation or backup.
The building blocks of sugaroid scenarios are actions. Actions are objects of classes inherited from {{Code|libsugaroid.context.Action}}. Action classes represent one particular aspect of some sugar client behaviour, e.g., activation or backup.


The simple scenario looks like:
A simple scenario looks like:


  from libsugaroid.actions import Activation, Registration, Presence, Backup
  from libsugaroid.actions import Activation, Registration, Presence, Backup
Line 42: Line 42:
=== Launch ===
=== Launch ===


The first command-line argument that scenario should get is a nick of sugar user. That nick will be used as a directory name in {{Code|--root}} directory to store all data related to this nick. Besides, scenario should take {{Code|--server}} command-line argument with launched [[Sugar_Server_Kit/sugar-server|sugar-server]] address and {{Code|--lease_key}} with a path to public key that was used to sign leases returned by sugar-server.
The first command-line argument that scenario should receive is a nick of the sugar user. That nick will be used as a directory name in the {{Code|--root}} directory to store all data related to this nick. Thereafter, scenario should take a {{Code|--server}} command-line argument, with the launched [[Sugar_Server_Kit/sugar-server|sugar-server]] address, and a {{Code|--lease_key}} argument, with a path to the public key that was used to sign leases returned by sugar-server.


To simplify usage, serial number and UUID will be automatically generated basing on nick names. Thus, there is a fast way how to let sugar-server know about leases for scenario nicks:
To simplify usage, serial number and UUID will be automatically generated basing on nick names. Thus, there is a fast way in which to let sugar-server know about leases for scenario nicks:


  bc-make-lease `sugaroid id ''nick''` ''days'' | sugar-server activation import_lease
  bc-make-lease `sugaroid id ''nick''` ''days'' | sugar-server activation import_lease
Line 50: Line 50:
== Getting involved ==
== Getting involved ==


* [http://bugs.sugarlabs.org/newticket?component=sugar-server-kit Report] about bugs.
* [http://bugs.sugarlabs.org/newticket?component=sugar-server-kit Report] on bugs.
* Read the [http://git.sugarlabs.org/server/sugaroid/blobs/master/HACKING HACKING] file to know how to contribute by a code.
* Read the [http://git.sugarlabs.org/server/sugaroid/blobs/master/HACKING HACKING] file to know how to contribute with code.


== Resources ==
== Resources ==


* [http://git.sugarlabs.org/server/sugaroid Sources].
* [http://git.sugarlabs.org/server/sugaroid Sources].