Exemple #1
0
class CartContainerTest(unittest.TestCase):
    TAG = "latest"
    container_name = Docker().random_container_name('cart')
    mongo_container_name = Docker().random_container_name('cart-db')
    def __init__(self, methodName='runTest'):
        super(CartContainerTest, self).__init__(methodName)
        self.ip = ""
        
    def setUp(self):
        Docker().start_container(container_name=self.mongo_container_name, image="mongo", host="cart-db")
        command = ['docker', 'run',
                   '-d',
                   '--name', CartContainerTest.container_name,
                   '-h', 'cart',
                   '--link',
                   CartContainerTest.mongo_container_name,
                   'weaveworksdemos/cart:' + self.TAG]
        Docker().execute(command)
        self.ip = Docker().get_container_ip(CartContainerTest.container_name)

    def tearDown(self):
        Docker().kill_and_remove(CartContainerTest.container_name)
        Docker().kill_and_remove(CartContainerTest.mongo_container_name)

    def test_api_validated(self):
        limit = 60
        while Api().noResponse('http://'+ self.ip +':80/carts/579f21ae98684924944651bf'):
            if limit == 0:
                self.fail("Couldn't get the API running")
            limit = limit - 1
            sleep(1)
        
        out = Dredd().test_against_endpoint("carts", "http://cart/", links=[self.mongo_container_name, self.container_name], env=[("MONGO_ENDPOINT", "mongodb://cart-db:27017/data")])
        self.assertGreater(out.find("0 failing"), -1)
        self.assertGreater(out.find("0 errors"), -1)
    def setUp(self):
        print("+setUp")
        self.users_mock.start_container()
        self.payment_mock.start_container()
        self.shipping_mock.start_container()
        Docker().start_container(container_name=self.dynamodb_container_name,
                                 image="deangiberson/aws-dynamodb-local",
                                 host="orders-db")

        command = [
            'docker', 'run', '-d', '--name',
            OrdersContainerTest.container_name, '--env',
            'AWS_DYNAMODB_ENDPOINT=http://' +
            OrdersContainerTest.dynamodb_container_name + ':8000', '--env',
            'AWS_ACCESS_KEY_ID=foo', '--env', 'AWS_SECRET_ACCESS_KEY=bar',
            '--env', 'PORT=80', '-h', OrdersContainerTest.container_name,
            '--link', OrdersContainerTest.dynamodb_container_name, '--link',
            self.users_mock.container_name, '--link',
            self.payment_mock.container_name, '--link',
            self.shipping_mock.container_name,
            'weaveworksdemos/orders-aws:' + self.COMMIT
        ]
        Docker().execute(command, dump_streams=True)
        os.system("docker logs -f " + OrdersContainerTest.container_name +
                  " &")
        self.ip = Docker().get_container_ip(OrdersContainerTest.container_name)
        print("### orders container ip: " + self.ip)
        print("+setUp done")
Exemple #3
0
 def setUp(self):
     self.users_mock.start_container()
     self.payment_mock.start_container()
     self.shipping_mock.start_container()
     Docker().start_container(container_name=self.mongo_container_name, image="mongo", host="orders-db")
     print('Docker run target container')
     command = ['docker', 'run',
                '-d',
                '--name', OrdersContainerTest.container_name,
                '-h', OrdersContainerTest.container_name,
                '--link',
                OrdersContainerTest.mongo_container_name,
                '--link',
                self.users_mock.container_name,
                '--link',
                self.payment_mock.container_name,
                '--link',
                self.shipping_mock.container_name,
                'weaveworksdemos/orders:' + self.COMMIT]
     Docker().execute(command, dump_streams=True)
     print('Get IP address')
     limit = 30
     while self.ip == "":
         self.ip = Docker().get_container_ip(OrdersContainerTest.container_name)
         sleep(1)
         print('Waiting for get IP address')
         limit = limit - 1
         if limit == 0:
             self.fail("Coundn't get the IP Address")
     print('IP Address is %s' % self.ip)
Exemple #4
0
    def test_against_endpoint(self, service, api_endpoint, links=[], env=[]):
        self.container_name = Docker().random_container_name('openapi')
        command = [
            'docker', 'run', '-h', 'openapi', '--name', self.container_name,
            '-v', "{0}:{1}".format(os.getcwd() + "/../openapi/specs",
                                   "/tmp/specs/")
        ]

        if links != []:
            [command.extend(["--link", x]) for x in links]

        if env != []:
            [
                command.extend(["--env", "{}={}".format(x[0], x[1])])
                for x in env
            ]

        command.extend([
            Dredd.image, "/tmp/specs/{0}/{0}.json".format(service),
            api_endpoint, "-f", "/tmp/specs/{0}/hooks.js".format(service)
        ])

        out = Docker().execute(command)
        Docker().kill_and_remove(self.container_name)
        return out
Exemple #5
0
 def tearDown(self):
     command = ['docker', 'logs', OrdersContainerTest.container_name]
     Docker().execute(command)
     Docker().kill_and_remove(OrdersContainerTest.container_name)
     Docker().kill_and_remove(OrdersContainerTest.mongo_container_name)
     self.users_mock.cleanup()
     self.payment_mock.cleanup()
     self.shipping_mock.cleanup()
Exemple #6
0
class OrdersContainerTest(unittest.TestCase):
    TAG = "latest"
    COMMIT = ""
    container_name = Docker().random_container_name('orders')
    mongo_container_name = Docker().random_container_name('orders-db')

    def __init__(self, methodName='runTest'):
        super(OrdersContainerTest, self).__init__(methodName)
        self.users_mock = ServiceMock("users-orders-mock", "users-orders-mock")
        self.payment_mock = ServiceMock("payment", "payment")
        self.shipping_mock = ServiceMock("shipping", "shipping")
        self.ip = ""

    def setUp(self):
        self.users_mock.start_container()
        self.payment_mock.start_container()
        self.shipping_mock.start_container()
        Docker().start_container(container_name=self.mongo_container_name,
                                 image="mongo",
                                 host="orders-db")

        command = [
            'docker', 'run', '-d', '--name',
            OrdersContainerTest.container_name, '-h',
            OrdersContainerTest.container_name, '--link',
            OrdersContainerTest.mongo_container_name, '--link',
            self.users_mock.container_name, '--link',
            self.payment_mock.container_name, '--link',
            self.shipping_mock.container_name,
            'weaveworksdemos/orders:' + self.COMMIT
        ]
        Docker().execute(command, dump_streams=True)
        self.ip = Docker().get_container_ip(OrdersContainerTest.container_name)

    def tearDown(self):
        Docker().kill_and_remove(OrdersContainerTest.container_name)
        Docker().kill_and_remove(OrdersContainerTest.mongo_container_name)
        self.users_mock.cleanup()
        self.payment_mock.cleanup()
        self.shipping_mock.cleanup()

    def test_api_validated(self):
        limit = 30
        while Api().noResponse('http://' + self.ip + ':80/orders'):
            if limit == 0:
                self.fail("Couldn't get the API running")
            limit = limit - 1
            sleep(1)

        out = Dredd().test_against_endpoint(
            "orders",
            'http://' + self.ip + ':80/',
            links=[self.mongo_container_name, self.container_name],
            env=[("MONGO_ENDPOINT", "mongodb://orders-db:27017/data")],
            dump_streams=True)
        self.assertGreater(out.find("0 failing"), -1)
        self.assertGreater(out.find("0 errors"), -1)
        print(out)
 def setUp(self):
     command = [
         'docker', 'run', '-d', '--name',
         PaymentContainerTest.container_name, '-h', 'payment',
         'mushop/payment:' + self.TAG
     ]
     Docker().execute(command)
     self.ip = Docker().get_container_ip(
         PaymentContainerTest.container_name)
 def setUp(self):
     command = [
         'docker', 'run', '-d', '--name',
         PaymentContainerTest.container_name, '-h', 'payment',
         'weaveworksdemos/payment-dev:' + self.TAG
     ]
     Docker().execute(command)
     self.ip = Docker().get_container_ip(
         PaymentContainerTest.container_name)
Exemple #9
0
 def setUp(self):
     command = [
         'docker', 'run', '-d', '--name',
         CatalogueContainerTest.container_name, '-h',
         CatalogueContainerTest.container_name,
         'weaveworksdemos/catalogue:' + self.TAG
     ]
     Docker().execute(command)
     self.ip = Docker().get_container_ip(
         CatalogueContainerTest.container_name)
Exemple #10
0
class CatalogueApplicationTest(unittest.TestCase):
    TAG = "latest"
    container_name = 'catalogue'

    def __init__(self, methodName='runTest'):
        super(CatalogueApplicationTest, self).__init__(methodName)
        self.ip = ""
        self.front_end_ip = ""
        self.docker = Docker()

    def setUp(self):
        command = [
            'docker', 'run', '-d', '--name',
            CatalogueApplicationTest.container_name, '-h',
            CatalogueApplicationTest.container_name,
            'weaveworksdemos/catalogue:' + self.TAG
        ]
        self.docker.execute(command)
        self.ip = self.docker.get_container_ip(
            CatalogueApplicationTest.container_name)
        command = [
            'docker', 'run', '-d', '--link', 'catalogue', '--name',
            "front-end", '-h', "front-end",
            'weaveworksdemos/front-end:' + self.TAG
        ]
        self.docker.execute(command)
        self.front_end_ip = self.docker.get_container_ip("front-end")
        while Api().noResponse('http://' + self.front_end_ip + ':8079'):
            sleep(1)

    def tearDown(self):
        self.docker.kill_and_remove("front-end")
        self.docker.kill_and_remove(CatalogueApplicationTest.container_name)

    def test_catalogue_has_image(self):
        r = requests.get('http://' + self.front_end_ip + ':8079/catalogue',
                         timeout=5)
        data = r.json()
        for item in data:
            for imageUrl in item['imageUrl']:
                r = requests.get('http://' + self.front_end_ip + ':8079' +
                                 imageUrl,
                                 timeout=5)
                self.assertLess(r.status_code,
                                299,
                                msg=str(r.status_code) + ": error getting " +
                                imageUrl)
                self.assertGreater(int(r.headers.get("Content-Length")),
                                   0,
                                   msg="Issue with: " + imageUrl + ": " +
                                   r.headers.get("Content-Length"))
                self.assertEqual("image/jpeg",
                                 r.headers.get("Content-Type"),
                                 msg="Issue with: " + imageUrl + ": " +
                                 r.headers.get("Content-Type"))
Exemple #11
0
	def setUp(self):
		Docker().start_container(container_name=self.mongo_container_name, image="mongo", host="carts-db")
		command = ['docker', 'run',
				   '-d',
				   '--name', CartContainerTest.container_name,
				   '-h', 'carts',
				   '--link',
				   CartContainerTest.mongo_container_name,
				   'weaveworksdemos/carts:' + self.COMMIT]
		Docker().execute(command)
		self.ip = Docker().get_container_ip(CartContainerTest.container_name)
 def setUp(self):
     Docker().start_container(container_name=self.mongo_container_name,
                              image="mongo",
                              host="accounts-db")
     command = [
         'docker', 'run', '-d', '--name',
         AccountsContainerTest.container_name, '-h', 'accounts', '--link',
         self.mongo_container_name, 'weaveworksdemos/accounts:' + self.TAG
     ]
     Docker().execute(command)
     self.ip = Docker().get_container_ip(
         AccountsContainerTest.container_name)
Exemple #13
0
 def test_against_endpoint(self, json_spec, endpoint_container_name,
                           api_endpoint, mongo_endpoint_url,
                           mongo_container_name):
     self.container_name = Docker().random_container_name('openapi')
     command = [
         'docker', 'run', '-h', 'openapi', '--name', self.container_name,
         '--link', mongo_container_name, '--link', endpoint_container_name,
         '--env', "MONGO_ENDPOINT={0}".format(mongo_endpoint_url),
         Dredd.image, "/usr/src/app/{0}".format(json_spec), api_endpoint,
         "-f", "/usr/src/app/hooks.js"
     ]
     out = Docker().execute(command)
     Docker().kill_and_remove(self.container_name)
     return out
Exemple #14
0
 def test_maven(self):
     script_dir = os.path.dirname(os.path.realpath(__file__))
     code_dir = script_dir + "/.."
     home = expanduser("~")
     command = ['docker', 'run', '--rm', '-v', home + '/.m2:/root/.m2', '-v', code_dir + ':/usr/src/mymaven', '-w',
                '/usr/src/mymaven', 'maven:3.6-jdk-11', 'mvn', '-q', 'test']
     print(Docker().execute(command))
Exemple #15
0
    def test_go(self):
        script_dir = os.path.dirname(os.path.realpath(__file__))
        code_dir = script_dir + "/.."
        home = expanduser("~")
        goPath = os.environ['GOPATH']
        command = ['docker', 'run', '--rm', '-v', goPath + ':/go/src/', '-v', code_dir + ':/go/src/github.com/sls-microservices-demo/catalogue', '-w', '/go/src/github.com/sls-microservices-demo/catalogue', '-e', 'GOPATH=/go/', 'golang:1.7', 'go', 'test', '-v', '-covermode=count', '-coverprofile=coverage.out']

        print(Docker().execute(command))
class WishlistContainerTest(unittest.TestCase):
    TAG = "latest"
    COMMIT = ""
    container_name = Docker().random_container_name('wishlists')
    mongo_container_name = Docker().random_container_name('wishlists-db')

    def __init__(self, methodName='runTest'):
        super(WishlistContainerTest, self).__init__(methodName)
        self.ip = ""

    def setUp(self):
        Docker().start_container(container_name=self.mongo_container_name,
                                 image="mongo",
                                 host="wishlists-db")
        command = [
            'docker', 'run', '-d', '--name',
            WishlistContainerTest.container_name, '-h', 'wishlists', '--link',
            WishlistContainerTest.mongo_container_name,
            'weaveworksdemos/wishlists:' + self.COMMIT
        ]
        Docker().execute(command)
        self.ip = Docker().get_container_ip(
            WishlistContainerTest.container_name)

    def tearDown(self):
        Docker().kill_and_remove(WishlistContainerTest.container_name)
        Docker().kill_and_remove(WishlistContainerTest.mongo_container_name)

    def test_api_validated(self):
        limit = 30
        while Api().noResponse('http://' + self.ip + ':80/wishlists/'):
            if limit == 0:
                self.fail("Couldn't get the API running")
            limit = limit - 1
            sleep(1)

        out = Dredd().test_against_endpoint(
            "wishlists",
            "http://wishlists/",
            links=[self.mongo_container_name, self.container_name],
            env=[("MONGO_ENDPOINT", "mongodb://wishlists-db:27017/data")],
            dump_streams=True)
        self.assertGreater(out.find("0 failing"), -1)
        self.assertGreater(out.find("0 errors"), -1)
        print(out)
Exemple #17
0
 def start_container(self):
     command = [
         'docker', 'run', '-d', '--name', self.container_name, '-h',
         self.container_name, '-v', "{0}:{1}".format(os.getcwd(), "/data/"),
         '-e', 'FLASK_APP=/data/test/json-server/server.py',
         'weaveworksdemos/json-server', '--port', '80'
     ]
     Docker().execute(command)
     sleep(2)
Exemple #18
0
 def setUp(self):
     Docker().start_container(container_name=self.mysql_container_name,
                              image="mysql",
                              host=self.mysql_container_name,
                              env=[("MYSQL_ROOT_PASSWORD", "abc123"),
                                   ("MYSQL_DATABASE", "catalogue")])
     # todo: a better way to ensure mysql is up
     sleep(15)
     command = [
         'docker', 'run', '-d', '--name',
         CatalogueContainerTest.container_name, '--link',
         "{}:mysql".format(self.mysql_container_name), '-h',
         CatalogueContainerTest.container_name,
         'weaveworksdemos/catalogue:' + self.TAG
     ]
     Docker().execute(command)
     self.ip = Docker().get_container_ip(
         CatalogueContainerTest.container_name)
Exemple #19
0
 def test_go(self):
     script_dir = os.path.dirname(os.path.realpath(__file__))
     code_dir = script_dir + "/.."
     goPath = os.environ['GOPATH']
     command = [
         'docker', 'run', '--rm', '-v', goPath + ':/go/bin/', '-v',
         code_dir + ':/usr/src/', '-w', '/usr/src/', '-e', 'GOPATH=/go/bin',
         'golang:1.6', 'go', 'test', '-v'
     ]
     print(Docker().execute(command))
Exemple #20
0
 def setUp(self):
     Docker().start_container(container_name=self.mysql_container_name,
                              image="sls-microservices/catalogue-db:" +
                              self.TAG,
                              host=self.mysql_container_name,
                              env=[("MYSQL_ROOT_PASSWORD", ""),
                                   ("MYSQL_ALLOW_EMPTY_PASSWORD", True),
                                   ("MYSQL_DATABASE", "socksdb")])
     # todo: a better way to ensure mysql is up
     sleep(30)
     command = [
         'docker', 'run', '-d', '--name',
         CatalogueContainerTest.container_name, '--link',
         "{}:catalogue-db".format(self.mysql_container_name), '-h',
         CatalogueContainerTest.container_name,
         'sls-microservices/catalogue:' + self.TAG
     ]
     Docker().execute(command)
     self.ip = Docker().get_container_ip(
         CatalogueContainerTest.container_name)
Exemple #21
0
    def setUp(self):
        self.users_mock.start_container()
        self.payment_mock.start_container()
        self.shipping_mock.start_container()
        Docker().start_container(container_name=self.mongo_container_name,
                                 image="mongo",
                                 host="orders-db")

        command = [
            'docker', 'run', '-d', '--name',
            OrdersContainerTest.container_name, '-h',
            OrdersContainerTest.container_name, '--link',
            OrdersContainerTest.mongo_container_name, '--link',
            self.users_mock.container_name, '--link',
            self.payment_mock.container_name, '--link',
            self.shipping_mock.container_name,
            'weaveworksdemos/orders:' + self.COMMIT
        ]
        Docker().execute(command, dump_streams=True)
        self.ip = Docker().get_container_ip(OrdersContainerTest.container_name)
Exemple #22
0
 def test_maven(self):
     script_dir = os.path.dirname(os.path.realpath(__file__))
     code_dir = script_dir + "/.."
     home = expanduser("~")
     hosthome = format(os.getenv('HOST_HOME'))
     hostcode_dir = format(os.getenv('HOST_CODE_DIR'))
     command = [
         'docker', 'run', '--rm', '-v', hosthome + '/.m2:/root/.m2', '-v',
         hostcode_dir + ':/usr/src/mymaven', '-w', '/usr/src/mymaven',
         'maven:3.2-jdk-8', 'mvn', '-q', 'test'
     ]
     print(Docker().execute(command))
Exemple #23
0
    def test_go(self):
        script_dir = os.path.dirname(os.path.realpath(__file__))
        code_dir = script_dir + "/.."
        goPath = os.environ['GOPATH']
        command = [
            'docker', 'run', '--rm', '-v', goPath + ':/go/', '-v',
            code_dir + ':/go/src/github.com/gosample/microdemo/payment', '-w',
            '/go/src/github.com/gosample/microdemo/payment', '-e',
            'GOPATH=/go/', 'golang:1.7', 'go', 'test', '-v',
            '-covermode=count', '-coverprofile=coverage.out'
        ]

        print(Docker().execute(command, dump_streams=True))
Exemple #24
0
    def test(self):
        script_dir = os.path.dirname(os.path.realpath(__file__))
        code_dir = script_dir + "/../../sockshop/" + self.container_dir

        test_container_name = self.container_dir + '-test'
        docker = Docker()
        docker.execute(['docker', 'build', '-t', test_container_name, code_dir])
        docker.execute(['docker', 'run', '--rm', test_container_name, 'go', 'test',
                        'github.com/microservices-demo/microservices-demo/' + self.container_dir])
Exemple #25
0
 def test_maven(self):
     script_dir = os.path.dirname(os.path.realpath(__file__))
     code_dir = script_dir + "/.."
     home = expanduser("~")
     command = [
         'docker', 'run', '--rm', '-v', home + '/.m2:/root/.m2', '-v',
         code_dir + ':/usr/src/mymaven', '-w', '/usr/src/mymaven',
         'maven:3.2-jdk-8', 'mvn',
         '-DrepoToken=' + os.getenv('COVERALLS_TOKEN'),
         '-DserviceJobId=' + os.getenv('TRAVIS_JOB_ID'),
         '-Dbranch=' + os.getenv('TRAVIS_BRANCH'),
         '-DpullRequest=' + os.getenv('TRAVIS_PULL_REQUEST'),
         '-DserviceName=' + os.getenv('TRAVIS'), 'verify', 'jacoco:report',
         'coveralls:report'
     ]
     print(Docker().execute(command))
Exemple #26
0
class PaymentContainerTest(unittest.TestCase):
    TAG = "latest"
    PORT = "8080"

    container_name = Docker().random_container_name('payment')

    def __init__(self, methodName='runTest'):
        super(PaymentContainerTest, self).__init__(methodName)
        self.ip = ""

    def setUp(self):
        command = [
            'docker', 'run', '-d', '--name',
            PaymentContainerTest.container_name, '-h', 'payment',
            'weaveworksdemos/payment-dev:' + self.TAG, '/app',
            '-port=' + PaymentContainerTest.PORT
        ]
        Docker().execute(command)
        self.ip = Docker().get_container_ip(
            PaymentContainerTest.container_name)

    def tearDown(self):
        Docker().kill_and_remove(PaymentContainerTest.container_name)

    def test_api_validated(self):
        limit = 30
        url = f'http://{self.ip}:{PaymentContainerTest.PORT}/'

        while Api().noResponse(url + 'payments/'):
            if limit == 0:
                self.fail("Couldn't get the API running")
            limit = limit - 1
            sleep(1)

        out = Dredd().test_against_endpoint("payment",
                                            url,
                                            links=[self.container_name],
                                            dump_streams=True)

        self.assertGreater(out.find("0 failing"), -1)
        self.assertGreater(out.find("0 errors"), -1)
Exemple #27
0
 def test_maven(self):
     script_dir = os.path.dirname(os.path.realpath(__file__))
     code_dir = script_dir + "/.."
     home = expanduser("~")
     hosthome = format(os.getenv('HOST_HOME'))
     hostcode_dir = format(os.getenv('HOST_CODE_DIR'))
     command = ['docker', 'run', '--rm',
                '-v', hosthome + '/.m2:/root/.m2',
                '-v', hosthome + '/.m2/.sonar:/root/.sonar',
                '-v', hostcode_dir + ':/usr/src/mymaven',
                '-w', '/usr/src/mymaven',
                'maven:3.2-jdk-8',
                'mvn',
                '-Dsonar.login='******'SONAR_TOKEN'),
                '-Dsonar.host.url=' + os.getenv('SONAR_HOST'),
                '-Dsonar.java.binaries=target/classes',
                '-Dsonar.sources=src/main/java',
                'verify',
                'jacoco:report',
                'sonar:sonar']
     print(Docker().execute(command))
class PaymentContainerTest(unittest.TestCase):
    TAG = "latest"
    container_name = Docker().random_container_name('payment')

    def __init__(self, methodName='runTest'):
        super(PaymentContainerTest, self).__init__(methodName)
        self.ip = ""

    def setUp(self):
        command = [
            'docker', 'run', '-d', '--name',
            PaymentContainerTest.container_name, '-h', 'payment',
            'mushop/payment:' + self.TAG
        ]
        Docker().execute(command)
        self.ip = Docker().get_container_ip(
            PaymentContainerTest.container_name)

    def tearDown(self):
        Docker().kill_and_remove(PaymentContainerTest.container_name)

    def test_api_validated(self):
        limit = 30
        while Api().noResponse('http://' + self.ip + ':80/payments/'):
            if limit == 0:
                self.fail("Couldn't get the API running")
            limit = limit - 1
            sleep(1)

        out = Dredd().test_against_endpoint("payment",
                                            'http://' + self.ip + ':80/',
                                            links=[self.container_name],
                                            dump_streams=True)

        self.assertGreater(out.find("0 failing"), -1)
        self.assertGreater(out.find("0 errors"), -1)
Exemple #29
0
	def tearDown(self):
		Docker().kill_and_remove(CartContainerTest.container_name)
		Docker().kill_and_remove(CartContainerTest.mongo_container_name)
Exemple #30
0
 def tearDown(self):
     Docker().kill_and_remove(CatalogueContainerTest.container_name)
     Docker().kill_and_remove(CatalogueContainerTest.mysql_container_name)