def createKube(self): if "TEST_KUBERNETES" not in os.environ: raise SkipTest( "kubernetes integration tests only run when environment " "variable TEST_KUBERNETES is set") self.kube = kubeclientservice.KubeClientService( kubeclientservice.KubeCtlProxyConfigLoader())
def test_basic(self): self.patchProxyCmd(KUBE_CTL_PROXY_FAKE) self.config = config = kubeclientservice.KubeCtlProxyConfigLoader() yield config.startService() self.assertEqual(config.getConfig(), { 'master_url': 'http://localhost:8001', 'namespace': 'default' })
def test_config_args(self): self.patchProxyCmd(KUBE_CTL_PROXY_FAKE) self.config = config = kubeclientservice.KubeCtlProxyConfigLoader( proxy_port=8002, namespace="system") yield config.startService() self.assertEqual(config.kube_proxy_output, b'Starting to serve on 127.0.0.1:8002') self.assertEqual(config.getConfig(), { 'master_url': 'http://localhost:8002', 'namespace': 'system' }) yield config.stopService()
def masterConfig(num_concurrent, extra_steps=None): if extra_steps is None: extra_steps = [] c = {} c['schedulers'] = [ schedulers.ForceScheduler(name="force", builderNames=["testy"]) ] triggereables = [] for i in range(num_concurrent): c['schedulers'].append( schedulers.Triggerable( name="trigsched" + str(i), builderNames=["build"])) triggereables.append("trigsched" + str(i)) f = BuildFactory() f.addStep(steps.ShellCommand(command='echo hello')) f.addStep( steps.Trigger( schedulerNames=triggereables, waitForFinish=True, updateSourceStamp=True)) f.addStep(steps.ShellCommand(command='echo world')) f2 = BuildFactory() f2.addStep(steps.ShellCommand(command='echo ola')) for step in extra_steps: f2.addStep(step) c['builders'] = [ BuilderConfig(name="testy", workernames=["kubernetes0"], factory=f), BuilderConfig( name="build", workernames=["kubernetes" + str(i) for i in range(num_concurrent)], factory=f2) ] masterFQDN = os.environ.get('masterFQDN') c['workers'] = [ kubernetes.KubeLatentWorker( 'kubernetes' + str(i), 'buildbot/buildbot-worker', kube_config=kubeclientservice.KubeCtlProxyConfigLoader( namespace=os.getenv("KUBE_NAMESPACE", "default")), masterFQDN=masterFQDN) for i in range(num_concurrent) ] # un comment for debugging what happens if things looks locked. # c['www'] = {'port': 8080} c['protocols'] = {"pb": {"port": "tcp:9989"}} return c
def test_config_with_error(self): self.patchProxyCmd(KUBE_CTL_PROXY_FAKE_ERROR) self.config = config = kubeclientservice.KubeCtlProxyConfigLoader() with self.assertRaises(RuntimeError): yield config.startService()