import repository from arizona
[raven.git] / owl / client / seattle / owltest.repy
1 include owl.repy
2
3 # DBS = database names to update. You should define your own unique database
4 #       name here.
5 DBS = ["seattle"]
6
7 # OWL_URL = the URL to contact the Owl server.
8 OWL_URL = "http://owl.cs.arizona.edu/owl/"
9
10 # OWL_UPDATE_PERIOD = The interval in seconds at which to update the Owl database.
11 #       A repy timer will be created to launch a thread at this time.
12 OWL_UPDATE_PERIOD = 60
13
14 def owl_seattle_register():
15     """ register with the OWL server
16
17         In this function, we define the modules and fields that we will be
18         reporting to Owl. Modules serve as logical containers for fields, and
19         each module has a version number. If you modify a module (or the
20         field definitions contained within), then make sure to increment the
21         version number.
22
23         The module "basic" and the field "basic.id" are required. All other
24         fields are optional.
25     """
26     owl = Owl(OWL_URL, 10, 600, 600)
27
28     # basic.id is required and identifies the sliver that is running
29     fBasicID = Field("id", "basic", "string", "ID")
30     owl.register(DBS, "basic", "1.3", [fBasicID], "Basic")
31
32     # seattle.runtime is the runtime in seconds
33     fSeattleRuntime = Field("runtime", "seattle", "integer", "Runtime")
34     owl.register(DBS, "seattle", "1.5", [fSeattleRuntime], "Seattle")
35
36     # a few simulated variables for an experiment
37     fMyExperimentVariable1 = Field("v1", "myexperiment", "string", "var 1")
38     fMyExperimentVariable2 = Field("v2", "myexperiment", "integer", "var 2")
39     owl.register(DBS, "myexperiment", "1.0", [fMyExperimentVariable1, fMyExperimentVariable2], "My Experiment")
40
41 def owl_seattle_update():
42     """ send an update to the OWL server
43
44         In this function, we send an update request to Owl. The update is
45         contained in a dictionary where each key is in "modulename.fieldname"
46         format (for example, "basic.id").
47     """
48     owl = Owl(OWL_URL, 10, 600, 600)
49
50     update = {}
51
52     update["basic.id"] = getmyip()
53     update["seattle.runtime"] = str(int(getruntime()))
54
55     # similated variables
56     update["myexperiment.v1"] = "foo"
57     update["myexperiment.v2"] = "47"
58
59     # for debugging; comment out if unneeded
60     print "calling update"
61
62     owl.update(DBS, update)
63
64     settimer(OWL_UPDATE_PERIOD, owl_seattle_update, [])
65
66 def owl_seattle_init():
67     # register with owl to tell what our fields are
68     owl_seattle_register()
69
70     # schedule an owl update. the first update will happen immediately.
71     settimer(0, owl_seattle_update, [])
72
73 if callfunc == "initialize":
74     print "owl experiment start"
75
76     # register with Owl, and fork off the Owl updater process
77     owl_seattle_init()
78
79     # simulate some work by looping around for 10 minutes
80     i=0;
81     while (i<600):
82        # I'm doing lots of work here!
83        sleep(1)
84        i = i + 1
85
86     print "owl experiment complete"
87
88     exitall()