import unittest import docker import os import subprocess class CrawlerCosEmitterTests(unittest.TestCase): def setUp(self): self.docker = docker.Client( base_url='unix://var/run/docker.sock', version='auto') os.mkdir('/etc/cos-secrets', 0755 ) f=open("/etc/cos-secrets/access_key", "w+") f.write("test") f.close() f=open("/etc/cos-secrets/secret_key", "w+") f.write("testforall") f.close() f=open("/etc/cos-secrets/location", "w+") f.write("test") f.close() self.start_minio_container() self.start_crawled_container() def tearDown(self): containers = self.docker.containers() for container in containers: self.docker.stop(container=container['Id']) self.docker.remove_container(container=container['Id']) def start_minio_container(self): self.docker.pull(repository='shri4u/minio2', tag='latest') self.minio_container = self.docker.create_container( image='shri4u/minio2', ports=[9000], host_config=self.docker.create_host_config(port_bindings={ 9000: 9000 }), environment={'MINIO_ACCESS_KEY': 'test', 'MINIO_SECRET_KEY': 'testforall'}, command="server /data") self.docker.start(container=self.minio_container['Id']) def start_crawled_container(self): # start a container to be crawled self.docker.pull(repository='alpine', tag='latest') self.container = self.docker.create_container( image='alpine:latest', command='/bin/sleep 60') self.docker.start(container=self.container['Id']) def testFuntionalCosEmitter(self): env = os.environ.copy() mypath = os.path.dirname(os.path.realpath(__file__)) # crawler itself needs to be root process = subprocess.Popen( [ '/usr/bin/python', mypath + '/../../crawler/crawler.py', '--url', 'cos://127.0.0.1:9000/test', '--features', 'cpu,memory', '--crawlContainers', self.container['Id'], '--crawlmode', 'OUTCONTAINER', '--numprocesses', '1' ], env=env) stdout, stderr = process.communicate() assert process.returncode == 0 print stderr print stdout if __name__ == '__main__': unittest.main()