~juju-deployers/juju-deployer/darwin

« back to all changes in this revision

Viewing changes to deployer/tests/test_goenv.py

  • Committer: Adam Gandelman
  • Date: 2013-09-03 20:44:14 UTC
  • mfrom: (114 darwin)
  • mto: This revision was merged to the branch mainline in revision 119.
  • Revision ID: adamg@canonical.com-20130903204414-xsqqz2gp83dp5d2o
MergeĀ lp:juju-deployer/darwin.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import logging
 
2
import os
 
3
import time
 
4
import sys
 
5
import unittest
 
6
 
 
7
from deployer.env.go import GoEnvironment
 
8
 
 
9
from .base import Base
 
10
 
 
11
 
 
12
# Takes roughly about 6m on core2 + ssd, mostly cloudinit time
 
13
@unittest.skipIf(
 
14
    (not bool(os.environ.get("TEST_ENDPOINT"))),
 
15
    "Test env must be defined: TEST_ENDPOINT")
 
16
class LiveEnvironmentTest(Base):
 
17
 
 
18
    def setUp(self):
 
19
        self.endpoint = os.environ.get("TEST_ENDPOINT")
 
20
        self.output = self.capture_logging(
 
21
            "deployer", log_file=sys.stderr, level=logging.DEBUG)
 
22
        self.env = GoEnvironment(
 
23
            os.environ.get("JUJU_ENV"), self.endpoint)
 
24
        self.env.connect()
 
25
        self.assertFalse(self.env.status().get('services'))
 
26
        # Destroy everything.. consistent baseline
 
27
        self.env.reset(terminate_machines=True, terminate_delay=240)
 
28
 
 
29
    def tearDown(self):
 
30
        self.env.reset(terminate_machines=True, terminate_delay=240)
 
31
        self.env.close()
 
32
 
 
33
    def test_env(self):
 
34
        status = self.env.status()
 
35
        self.env.deploy("test-blog", "cs:precise/wordpress")
 
36
        self.env.deploy("test-db", "cs:precise/mysql")
 
37
        self.env.add_relation("test-db", "test-blog")
 
38
        self.env.add_units('test-blog', 1)
 
39
 
 
40
        # Sleep cause juju core watches are eventually consistent (5s window)
 
41
        # and status rpc is broken (http://pad.lv/1203105)
 
42
        time.sleep(6)
 
43
        self.env.wait_for_units(timeout=800)
 
44
        status = self.env.status()
 
45
 
 
46
        services = ["test-blog", "test-db"]
 
47
        self.assertEqual(
 
48
            sorted(status['services'].keys()),
 
49
            services)
 
50
        for s in services:
 
51
            for k, u in status['services'][s]['units'].items():
 
52
                self.assertEqual(u['agent-state'], "started")