Platform Team/Server Kit/sugar-unit

Summary

Library and application that mimic regular sugar clients behaviour to help with testing Sugar Server Kit components and Sugar Server Kit based solutions.

Using libsugaroid

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

See sugar-server integration tests for examples.

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.

Scenario files

The regular way is writing scenarios, python scripts that need to be launched by sugaroid program, i.e., such files need to have headers (you need to have path to source sugaroid file in PATH variable):

#!/bin/env sugaroid

Scenario files should have an access point, the function main:

def main(context, args):
    pass

it will be launched by sugaroid with passing execution context as a libsugaroid.context.Context object and command-line arguments. The content of main() function is exactly the scenario how sugaroid should behave.

Actions

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

The simple scenario looks like:

from libsugaroid.actions import Activation, Registration, Presence, Backup

def main(context, args):
    context.call(Activation)
    context.call(Registration)
    context.call(Presence)
    context.call(Backup, tries=1)

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 --root directory to store all data related to this nick. Besides, scenario should take --server command-line argument with launched sugar-server address and --lease_key with a path to public key that was used to sign leases returned by sugar-server.

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

bc-make-lease `sugaroid id nick` days | sugar-server activation import_lease

Getting involved

  • Report about bugs.
  • Read the HACKING file to know how to contribute by a code.

Resources