~hazmat/pyjuju/rapi-delta

« back to all changes in this revision

Viewing changes to juju/hooks/tests/test_scheduler.py

  • Committer: Kapil Thangavelu
  • Date: 2012-09-19 20:38:44 UTC
  • mfrom: (573.1.6 rest-context)
  • Revision ID: kapil@canonical.com-20120919203844-dc2pf82ttm7xj3xs
Merged rest-context into rapi-delta.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
import logging
2
2
import os
3
 
import yaml
4
3
 
5
4
from twisted.internet.defer import (
6
5
    inlineCallbacks, fail, succeed, Deferred, returnValue)
7
 
 
 
6
from juju.lib import serializer
8
7
from juju.hooks.scheduler import HookScheduler
9
8
from juju.state.tests.test_service import ServiceStateManagerTestBase
10
9
 
44
43
 
45
44
    def write_single_unit_state(self):
46
45
        with open(self.state_file, "w") as f:
47
 
            f.write(yaml.dump({
 
46
            f.write(serializer.dump({
48
47
                "context_members": ["u-1"],
49
48
                "member_versions": {"u-1": 0},
50
49
                "unit_ops": {},
82
81
        yield sched_done
83
82
        self.assertFalse(self.scheduler.running)
84
83
        with open(self.state_file) as f:
85
 
            self.assertEquals(yaml.load(f.read()), {
 
84
            self.assertEquals(serializer.load(f.read()), {
86
85
                "context_members": ['u-1'],
87
86
                "member_versions": {"u-1": 0},
88
87
                "change_queue": [
118
117
        self.assertFalse(collected)
119
118
 
120
119
        with open(self.state_file) as f:
121
 
            self.assertEquals(yaml.load(f.read()), {
 
120
            self.assertEquals(serializer.load(f.read()), {
122
121
                "context_members": [],
123
122
                "member_versions": {},
124
123
                "change_queue": [
163
162
        self.scheduler.cb_change_members(["u-1"], ["u-2"])
164
163
 
165
164
        with open(self.state_file) as f:
166
 
            self.assertEquals(yaml.load(f.read()), {
 
165
            self.assertEquals(serializer.load(f.read()), {
167
166
                "context_members": ['u-2'],
168
167
                "member_versions": {"u-2": 0},
169
168
                "change_queue": [
200
199
        self.assertFalse(self.scheduler.running)
201
200
 
202
201
        with open(self.state_file) as f:
203
 
            self.assertEquals(yaml.load(f.read()), {
 
202
            self.assertEquals(serializer.load(f.read()), {
204
203
                "context_members": ['u-2'],
205
204
                "member_versions": {"u-2": 0},
206
205
                "change_queue": [
318
317
             ("u-1", "modified", ["u-1"])])
319
318
 
320
319
        with open(self.state_file) as f:
321
 
            self.assertEquals(yaml.load(f.read()), {
 
320
            self.assertEquals(serializer.load(f.read()), {
322
321
                "context_members": ['u-1'],
323
322
                "member_versions": {"u-1": 0},
324
323
                "change_queue": []})
468
467
 
469
468
    def test_empty_state(self):
470
469
        with open(self.state_file, "w") as f:
471
 
            f.write(yaml.dump({}))
 
470
            f.write(serializer.dump({}))
472
471
 
473
472
        # Induce lazy creation to verify it can still survive
474
473
        self.scheduler
527
526
        it hasn't previously been given a notify of before.
528
527
        """
529
528
        with open(self.state_file, "w") as f:
530
 
            f.write(yaml.dump({
 
529
            f.write(serializer.dump({
531
530
                "context_members": ["u-1", "u-2"],
532
531
                "member_versions": {"u-1": 0, "u-2": 0},
533
532
                "change_queue": []}))
559
558
        self.assertEqual(members, ["u-2", "u-3", "u-4"])
560
559
 
561
560
        with open(self.state_file) as f:
562
 
            state = yaml.load(f.read())
 
561
            state = serializer.load(f.read())
563
562
            self.assertEquals(state, {
564
563
                "change_queue": [],
565
564
                "context_members": ["u-2", "u-3", "u-4"],
568
567
    @inlineCallbacks
569
568
    def test_state_is_loaded(self):
570
569
        with open(self.state_file, "w") as f:
571
 
            f.write(yaml.dump({
 
570
            f.write(serializer.dump({
572
571
                "context_members": ["u-1", "u-2", "u-3"],
573
572
                "member_versions": {"u-1": 5, "u-2": 2, "u-3": 0},
574
573
                "change_queue": [
594
593
        self.assertEqual(members, ["u-1", "u-2", "u-3"])
595
594
 
596
595
        with open(self.state_file) as f:
597
 
            state = yaml.load(f.read())
 
596
            state = serializer.load(f.read())
598
597
        self.assertEquals(state, {
599
598
            "context_members": ["u-1", "u-2", "u-3"],
600
599
            "member_versions": {"u-1": 5, "u-2": 2, "u-3": 0},
602
601
 
603
602
    def test_state_is_stored(self):
604
603
        with open(self.state_file, "w") as f:
605
 
            f.write(yaml.dump({
 
604
            f.write(serializer.dump({
606
605
                "context_members": ["u-1", "u-2"],
607
606
                "member_versions": {"u-1": 0, "u-2": 2},
608
607
                "change_queue": []}))
614
613
        self.scheduler.stop()
615
614
 
616
615
        with open(self.state_file) as f:
617
 
            state = yaml.load(f.read())
 
616
            state = serializer.load(f.read())
618
617
            self.assertEquals(state, {
619
618
                "context_members": ["u-2", "u-3"],
620
619
                "member_versions": {"u-2": 3, "u-3": 0},
641
640
        self.executor = execute
642
641
 
643
642
        with open(self.state_file, "w") as f:
644
 
            f.write(yaml.dump({
 
643
            f.write(serializer.dump({
645
644
            "context_members": ["u-1", "u-2"],
646
645
            "member_versions": {"u-1": 1, "u-2": 0, "u-3": 0},
647
646
            "change_queue": [
655
654
            yield self.poke_zk()
656
655
        yield self.assertFailure(d, SomeError)
657
656
        with open(self.state_file) as f:
658
 
            self.assertEquals(yaml.load(f.read()), {
 
657
            self.assertEquals(serializer.load(f.read()), {
659
658
                "context_members": ["u-1", "u-2"],
660
659
                "member_versions": {"u-1": 1, "u-2": 0, "u-3": 0},
661
660
                "change_queue": [
681
680
                 "members":["u-1", "u-2", "u-3"]},
682
681
                ]}
683
682
        with open(self.state_file, "w") as f:
684
 
            f.write(yaml.dump(initial_state))
 
683
            f.write(serializer.dump(initial_state))
685
684
 
686
685
        d = self.scheduler.run()
687
686
        while not self.execute_called:
688
687
            yield self.poke_zk()
689
688
        yield self.assertFailure(d, SomeError)
690
689
        with open(self.state_file) as f:
691
 
            self.assertEquals(yaml.load(f.read()), initial_state)
 
690
            self.assertEquals(serializer.load(f.read()), initial_state)
692
691
 
693
692
    def test_ignore_equal_settings_version(self):
694
693
        """
718
717
        on old_units.
719
718
        """
720
719
        with open(self.state_file, "w") as f:
721
 
            f.write(yaml.dump({
 
720
            f.write(serializer.dump({
722
721
            "context_members": ["u-1", "u-2"],
723
722
            "member_versions": {"u-1": 0, "u-2": 0},
724
723
            "change_queue": []}))