def start(self): self.reset() self.server.start() sock_utils.tryConnect('::', self.plainPort, logFile=self.errorLog, abortFunc=self.server.check, )
def testAuthenticatedHTTPProxy(self): # CNY-1687 self.openRepository() if not os.path.exists(rephelp.HTTPProxy.proxyBinPath): raise testhelp.SkipTestException( 'testHTTPProxy depends on squid being installed') h = rephelp.HTTPProxy(os.path.join(self.workDir, "http-cache")) proxyUri = h.start() try: sock_utils.tryConnect("localhost", h.port) # We cannot have an HTTP proxy and a Conary proxy chained together. # (we can have a client talking to a Conary proxy that talks to a repo # via an HTTP proxy) self.cfg.conaryProxy = {} # Unauthenticated, should fail self.cfg.configLine("proxy http://localhost:%s" % h.authPort) client = conaryclient.ConaryClient(self.cfg) repos = client.getRepos() try: versions = repos.c['localhost'].checkVersion() except errors.OpenError, e: self.assertTrue('407 Proxy Authentication Required' in str(e), str(e)) else:
def testAuthenticatedHTTPProxy(self): # CNY-1687 self.openRepository() if not os.path.exists(rephelp.HTTPProxy.proxyBinPath): raise testhelp.SkipTestException('testHTTPProxy depends on squid being installed') h = rephelp.HTTPProxy(os.path.join(self.workDir, "http-cache")) proxyUri = h.start() try: sock_utils.tryConnect("localhost", h.port) # We cannot have an HTTP proxy and a Conary proxy chained together. # (we can have a client talking to a Conary proxy that talks to a repo # via an HTTP proxy) self.cfg.conaryProxy = {} # Unauthenticated, should fail self.cfg.configLine("proxy http://localhost:%s" % h.authPort) client = conaryclient.ConaryClient(self.cfg) repos = client.getRepos() try: versions = repos.c['localhost'].checkVersion() except errors.OpenError, e: self.assertTrue('407 Proxy Authentication Required' in str(e), str(e)) else:
def __init__(self): self.port = testhelp.findPorts(num=1)[0] self.childPid = os.fork() if self.childPid > 0: sock_utils.tryConnect('127.0.0.1', self.port) return server = SimpleXMLRPCServer6(("::", self.port), logRequests=False) server.register_instance(self.handlerFactory()) server.serve_forever()
def __init__(self): self.port = testhelp.findPorts(num = 1)[0] self.childPid = os.fork() if self.childPid > 0: sock_utils.tryConnect('127.0.0.1', self.port) return server = SimpleXMLRPCServer6(("::", self.port), logRequests=False) server.register_instance(self.handlerFactory()) server.serve_forever()
def testSecureHTTPServer(self): # Checks that the secure SSL server works if not server.SSL: raise testhelp.SkipTestException("m2crypto not installed") cfg = server.ServerConfig() cfg.port = testhelp.findPorts(1)[0] cfg.tmpdir = os.path.join(self.workDir, 'proxyTmpDir') cfg.changesetCacheDir = os.path.join(self.workDir, 'changesetCacheDir') cfg.proxyContentsDir = os.path.join(self.workDir, 'proxyContentsDir') cfg.traceLog = (10, os.path.join(self.workDir, "proxy.debug")) cfg.useSSL = True cfg.sslCert = os.path.join(resources.get_archive(), 'ssl-cert.crt') cfg.sslKey = os.path.join(resources.get_archive(), 'ssl-cert.key') cfgfile = os.path.join(self.workDir, "proxy.conf") serverrc = open(cfgfile, "w+") cfg.store(serverrc, includeDocs=False) serverrc.close() util.mkdirChain(cfg.tmpdir) util.mkdirChain(cfg.changesetCacheDir) util.mkdirChain(cfg.proxyContentsDir) pid = os.fork() if pid == 0: # In the child try: errfd = os.open(os.path.join(self.workDir, "proxy.log"), os.O_RDWR | os.O_CREAT) os.dup2(errfd, sys.stderr.fileno()) os.close(errfd) srvpy = os.path.abspath(server.__file__).replace('.pyc', '.py') os.execv(srvpy, [ srvpy, '--config-file', cfgfile ]) os._exit(0) except: os._exit(70) self.openRepository(2, useSSL=True) # In the parent try: # Set conary proxy self.cfg.configLine("conaryProxy https://localhost:%s" % cfg.port) client = conaryclient.ConaryClient(self.cfg) sock_utils.tryConnect("127.0.0.1", cfg.port) srvVers = client.repos.c['localhost2'].checkVersion() self.assertTrue(srvVers) finally: self.servers.stopServer(2) os.kill(pid, signal.SIGTERM) os.waitpid(pid, 0)
def start(self): self.reset() self.server.stdout = self.server.stderr = open(self.errorLog, 'a') self.server.start() if self.socketPath: host = None port = self.socketPath else: host = '127.0.0.1' port = self.port sock_utils.tryConnect(host, port, logFile=self.errorLog, abortFunc=self.server.check, )
def start(self, resetDir = True): self._startAppSpecificTasks(resetDir = resetDir) if self.serverpid != -1: return # This may not be catching all semaphores (and may catch extra ones # too) oldSemaphores = os_utils.listSemaphores() if getattr(self, 'socket', None): self.socket.close() self.socket = None self.serverpid = os.fork() if self.serverpid == 0: try: os.chdir('/') #print "starting server in %s" % self.serverRoot args = (self._serverFileName, "-X", "-d", self.serverRoot, "-f", "httpd.conf", "-C", 'DocumentRoot "%s"' % self.serverRoot) # need to setpgrp because httpd stop kills the processgroup os.setpgrp() os_utils.osExec(args) except: traceback.print_exc() os._exit(70) else: pass sock_utils.tryConnect("localhost", self.port, logFile = self.serverRoot + '/error_log') for _ in range(200): self.semaphores = os_utils.listSemaphores() - oldSemaphores if self.semaphores: break time.sleep(.1) os.mkdir(os.path.join(self.serverRoot, 'cscache'))
def start(self): self.server.start() sock_utils.tryConnect('::', self.port, abortFunc=self.server.check)
def url(self): # make sure the child is ready sock_utils.tryConnect("127.0.0.1", self.port) return "http://127.0.0.1:%d/" % self.port
def _testSlowActionWithStandalone(self, useSSL = False): # Test to make sure that slow commits still work even with the # proxy keepalive code added (CNY-1341) cfg = server.ServerConfig() cfg.port = testhelp.findPorts(1)[0] cfg.contentsDir = ('legacy', [self.workDir + '/contents']) cfg.repositoryDB = ('sqlite', self.workDir + '/serverdb') cfg.logFile = self.workDir + '/serverlog' cfg.tmpDir = self.workDir + '/tmp' cfg.serverName = 'localhost' util.mkdirChain(cfg.tmpDir) util.mkdirChain(cfg.contentsDir[1][0]) if useSSL: cfg.useSSL = True cfg.sslCert = os.path.join(resources.get_archive(), 'ssl-cert.crt') cfg.sslKey = os.path.join(resources.get_archive(), 'ssl-cert.key') (driver, database) = cfg.repositoryDB db = dbstore.connect(database, driver) schema.loadSchema(db) schema.setupTempTables(db) auth = netauth.NetworkAuthorization(db, 'localhost') auth.addRole('foo') auth.addUser('foo', 'foo') auth.addRoleMember('foo', 'foo') auth.addAcl('foo', None, None, write = True) if useSSL: proto = "https" else: proto = "http" baseUrl = '%s://localhost:%s/' % (proto, cfg.port) pid = os.fork() if not pid: try: netServer = netserver.NetworkRepositoryServer(cfg, baseUrl) oldGetChangeSet = netServer.getChangeSet @netserver.accessReadOnly def getChangeSet(*args, **kw): rv = oldGetChangeSet(*args, **kw) # make sure the client sends its message self.sleep(7) return rv getChangeSet.im_func = getChangeSet netServer.getChangeSet = getChangeSet class HttpRequestsSubclass(server.HttpRequests): tmpDir = cfg.tmpDir netRepos = proxy.SimpleRepositoryFilter(cfg, baseUrl, netServer) restHandler = None HttpRequestsSubclass.cfg = cfg if useSSL: ctx = server.createSSLContext(cfg) httpServer = server.SecureHTTPServer(("", cfg.port), HttpRequestsSubclass, ctx) else: httpServer = server.HTTPServer(("", cfg.port), HttpRequestsSubclass) self.captureOutput(server.serve, httpServer) finally: os._exit(0) try: sock_utils.tryConnect("127.0.0.1", cfg.port) cfg = conarycfg.ConaryConfiguration(False) cfg.repositoryMap = {'localhost' : baseUrl } cfg.user.addServerGlob('localhost', 'foo', 'foo') client = conaryclient.ConaryClient(cfg) repos = client.getRepos() trv, cs = self.Component('foo:run', '1') repos.commitChangeSet(cs) # getTrove will fail because it takes more than 5 seconds assert(repos.getTrove(*trv.getNameVersionFlavor())) finally: os.kill(pid, signal.SIGTERM) os.waitpid(pid, 0)
def start(self): self.reset() self.server.stdout = self.server.stderr = open(self.errorLog, "a") self.server.start() sock_utils.tryConnect("::", self.port, logFile=self.errorLog, abortFunc=self.server.check)