Example #1
0
    def testChunkedAllTheWay(self):
        reactor = CallTrace('Reactor')
        sokket = CallTrace('Sokket')
        data = []

        class Handler:
            def send(self, chunk):
                data.append(chunk)

            def throw(self, exception):
                pass

        httpreader = HttpReader(reactor, sokket, Handler(), 'GET', 'host,nl',
                                '/')
        httpreader._chunked = True
        # chunk == network message
        httpreader._sendFragment('4\r\n1234\r\n')
        self.assertEquals(['1234'], data)
        httpreader._sendFragment('10\r\n0123456789abcdef\r\n')
        self.assertEquals(['1234', '0123456789abcdef'], data)
        del data[0]
        del data[0]
        # chunk = 2 network messages
        httpreader._sendFragment('10\r\nfedcba')
        #self.assertEquals(['fedcba'], data)
        httpreader._sendFragment('9876543210\r\n')
        self.assertEquals(['fedcba9876543210'], data)
    def testExceptionInDownstreamHandlePacket(self):
        reactor = CallTrace()
        server = UdpPacketListener(reactor=reactor, port=1234)
        try:
            sok = CallTrace(
                returnValues={'recvfrom': (b'data', ('127.0.0.1', 1234))})
            observer = CallTrace()
            observer.exceptions['handlePacket'] = Exception(
                "This should be happening")
            server.addObserver(observer)

            mockStderr = StringIO()
            sys.stderr = mockStderr
            try:
                server._handlePacket(sok)
                reactor.calledMethods[-1].args[0]()
            finally:
                sys.stderr = sys.__stderr__
            lines = mockStderr.getvalue().split('\n')
            self.assertEqual(
                "Exception in _handlePacket for data='data' from ('127.0.0.1', 1234)",
                lines[0])
            self.assertEqual('Traceback (most recent call last):', lines[1])
            self.assertEqual('Exception: This should be happening', lines[-2])
        finally:
            server.close()
 def setUp(self):
     SeecrTestCase.setUp(self)
     self.observer1 = CallTrace('observer1',
                                emptyGeneratorMethods=['message'],
                                returnValues={
                                    'function': 41,
                                    'gen': (i for i in [41]),
                                    'noop': None
                                })
     self.observer2 = object()
     self.observer3 = CallTrace('observer3',
                                emptyGeneratorMethods=['message'],
                                returnValues={
                                    'function': 42,
                                    'gen': (i for i in [42]),
                                    'noop': None
                                })
     self.dna = be(
         (Observable(), (FilterMessages(
             disallowed=['message', 'function', 'gen', 'noop']),
                         (self.observer1, )),
          (FilterMessages(allowed=['message', 'function', 'gen', 'noop']),
           (self.observer2, )),
          (FilterMessages(allowed=['message', 'function', 'gen', 'noop']),
           (self.observer3, ))))
Example #4
0
 def testCouldHaveButDoesnot(self):
     inputEvent = fromstring('<document><other/></document>')
     interceptor = CallTrace('Interceptor',
                             ignoredAttributes=[
                                 'getData', 'all_unknown', 'any_unknown',
                                 'call_unknown'
                             ],
                             methods={'add': yieldNothing})
     storage = CallTrace('Storage',
                         ignoredAttributes=['add', 'all_unknown'])
     storage.exceptions['getData'] = KeyError('Part not available')
     v = createVenturiHelix([{
         'partname': 'other',
         'xpath': '/document/other'
     }], [{
         'partname': 'one',
         'xpath': '/document/one'
     }], interceptor, storage)
     list(compose(v.all.add('identifier', 'document', inputEvent)))
     self.assertEquals(['begin', 'add'],
                       [m.name for m in interceptor.calledMethods])
     self.assertEquals('identifier',
                       interceptor.calledMethods[1].kwargs['identifier'])
     self.assertEquals('other',
                       interceptor.calledMethods[1].kwargs['partname'])
    def testShouldAbortInitWithExceptionIfRunningMarkerStillThere(self):
        # Subclassed SystemExit for ShutdownFailedException to ensure a service quits when left in an inconsistent state,
        # even if it needs to traverse "except (SystemExit, KeyboardInterrupt, AssertionError)" catch-statements.
        self.assertTrue(issubclass(ShutdownFailedException, SystemExit))

        with open(join(self.tempdir, 'running.marker'), 'w') as fp:
            fp.write('already there')
        with stdout_replaced() as output:
            try:
                self._createShutdownHandler(statePath=self.tempdir,
                                            server=CallTrace('server'),
                                            reactor=CallTrace('reactor'))
                self.fail('should terminate')
            except ShutdownFailedException:
                pass

            self.assertTrue(
                "process was not previously shutdown to a consistent persistent state."
                in output.getvalue(), output.getvalue())
            self.assertTrue(
                "NOT starting from an unknown state." in output.getvalue(),
                output.getvalue())

        with stdout_replaced() as output:
            try:
                self._createShutdownHandler(statePath=self.tempdir,
                                            server=CallTrace('server'),
                                            reactor=CallTrace('reactor'))
                self.fail('should terminate')
            except SystemExit:
                pass
    def testHandleRequest(self):
        observer = CallTrace('Observer',
                             methods={
                                 'handleRequest': lambda *a, **kw:
                                 (x for x in [])
                             })
        s = ObservableHttpServer(CallTrace('Reactor'), 1024)
        s.addObserver(observer)

        list(
            compose(
                s.handleRequest(
                    RequestURI=
                    'http://localhost/path?key=value&emptykey#fragment')))
        self.assertEquals(1, len(observer.calledMethods))
        method = observer.calledMethods[0]
        self.assertEquals('handleRequest', method.name)
        self.assertEquals(0, len(method.args))
        self.assertEquals(7, len(method.kwargs))
        self.assertTrue('arguments' in method.kwargs, method.kwargs)
        arguments = method.kwargs['arguments']
        self.assertEquals(2, len(arguments))
        self.assertEquals(['emptykey', 'key'], sorted(arguments.keys()))
        self.assertEquals(['value'], arguments['key'])
        self.assertEquals([''], arguments['emptykey'])
    def testAddDomain(self):
        header, body = parseResponse(
            asBytes(
                self.dna.all.handleRequest(
                    user=CallTrace(returnValues=dict(isAdmin=False)),
                    path="/actions/addDomain",
                    Body=bytes(urlencode(dict(identifier="aap")),
                               encoding="utf-8"),
                    Method='Post')))
        self.assertEqual(0, len(self.observable.calledMethods))
        self.assertEqual("200", header['StatusCode'])
        self.assertEqual("application/json", header['Headers']['Content-Type'])
        response = JsonDict.loads(body)
        self.assertFalse(response['success'])
        self.assertEqual("Not allowed", response['message'])

        header, body = parseResponse(
            asBytes(
                self.dna.all.handleRequest(
                    user=CallTrace(returnValues=dict(isAdmin=True)),
                    path="/actions/addDomain",
                    Body=bytes(urlencode(dict(identifier="aap")),
                               encoding="utf-8"),
                    Method='Post')))
        self.assertEqual("200", header['StatusCode'])
        self.assertEqual("application/json", header['Headers']['Content-Type'])
        response = JsonDict.loads(body)
        self.assertTrue(response['success'])
        self.assertEqual(1, len(self.observable.calledMethods))
        self.assertEqual("addDomain", self.observable.calledMethods[0].name)
        self.assertEqual(dict(identifier='aap'),
                         self.observable.calledMethods[0].kwargs)
Example #8
0
    def testLastRecvContainsCompleteChunk(self):
        reactor = CallTrace('Reactor')
        sokket = CallTrace('Sokket')
        data = []
        done = []

        class Handler:
            def send(self, chunk):
                data.append(chunk)

            def throw(self, exception):
                done.append(True)

        httpreader = HttpReader(reactor, sokket, Handler(), 'GET', 'host,nl',
                                '/')
        httpreader._chunked = True
        chunkOne = '9\r\n123456789\r\n'
        chunkTwo = '8\r\n87654321\r\n'
        httpreader._sendFragment(chunkOne)
        self.assertEquals(['123456789'], data)
        httpreader._sendFragment(chunkTwo)
        self.assertEquals(['123456789', '87654321'], data)
        while data:
            del data[0]  # now both in one network message
        httpreader._sendFragment(chunkOne + chunkTwo + '0\r\n\r\n')
        # Send fragment will only read one fragment.
        # Now feed it until all chunks are finished
        httpreader._sendFragment('')
        httpreader._sendFragment('')
        self.assertEquals(['123456789', '87654321'], data)
        self.assertEquals([True], done)
Example #9
0
    def testAnalyseLog(self):
        observer = CallTrace()
        def handleRequest(**kwargs):
            yield "We did it!"
        handleRequestMock = CallTrace(methods={'handleRequest': handleRequest})
        dna = be(
            (Observable(),
                (LogCollector(),
                    (GustosLogWriter(),
                        (AgentCountReport(gustosGroup="Gustos Group", scopeNames=('mock', )), ),
                        (observer, )
                    ),
                    (LogCollectorScope("mock"),
                        (HandleRequestLog(),
                            (handleRequestMock, )
                        )
                    )
                )
             )
        )

        result = list(compose(dna.all.handleRequest(Headers={'User-Agent': GOOGLE_BOT})))
        self.assertEqual(b"We did it!", result[0])

        valuesKwarg = observer.calledMethods[-1].kwargs['values']
        self.assertEqual({'Gustos Group': {'User agents': {'Googlebot/2.1': {'count': 1}}}}, valuesKwarg)
    def testOne(self):
        observable = Observable()
        bitMatrixRow = CallTrace('BitMatrixRow')
        multi = MultiLevelDrilldown({'date': [('datelevel1', 10, False)]})
        drilldown = CallTrace('Drilldown')

        def dd(*args, **kwargs):
            return iter([('datelevel1', iter([('2008', 13), ('2007', 10)]))])
            yield

        drilldown.methods['drilldown'] = dd
        multi.addObserver(drilldown)
        observable.addObserver(multi)

        result = list(
            compose(observable.call.multiLevelDrilldown(
                bitMatrixRow, ['date'])))

        self.assertEqual(1, len(drilldown.calledMethods))
        drilldownMethod = drilldown.calledMethods[0]
        self.assertEqual('drilldown', drilldownMethod.name)
        self.assertEqual((bitMatrixRow, [('datelevel1', 10, False)]),
                         drilldownMethod.args)
        self.assertEqual(1, len(result))
        (inputFieldName, realFieldName), termCounts = result[0]
        self.assertEqual('date', inputFieldName)
        self.assertEqual('datelevel1', realFieldName)
        self.assertEqual([('2008', 13), ('2007', 10)], list(termCounts))
Example #11
0
 def testReadFromStorage(self):
     inputEvent = fromstring('<document/>')
     interceptor = CallTrace('Interceptor',
                             ignoredAttributes=[
                                 'getData', 'all_unknown', 'any_unknown',
                                 'call_unknown'
                             ])
     interceptor.methods['add'] = yieldNothing
     storage = CallTrace('Storage',
                         ignoredAttributes=['add', 'all_unknown'])
     storage.returnValues['getData'] = '<some>this is partone</some>'
     v = createVenturiHelix(
         [{
             'partname': 'partone',
             'xpath': '/document/part[@name="partone"]/text()'
         }], [], interceptor, storage)
     list(compose(v.all.add('identifier', 'document', inputEvent)))
     self.assertEquals(['begin', 'add'],
                       [m.name for m in interceptor.calledMethods])
     self.assertEquals(
         '<some>this is partone</some>',
         lxmltostring(interceptor.calledMethods[1].kwargs['lxmlNode']))
     self.assertEquals(['begin', 'getData'], storage.calledMethodNames())
     self.assertEquals(dict(identifier='identifier', name='partone'),
                       storage.calledMethods[1].kwargs)
    def testSameAddFieldGeneratedTwoTimes(self):
        __callstack_var_tx__ = CallTrace('TX')
        __callstack_var_tx__.locals = {'id': 'identifier'}
        intercept = CallTrace(methods={'add': add})
        fields2Xml = Fields2Xml('extra')
        fields2Xml.addObserver(intercept)

        def f():
            f = yield fields2Xml.beginTransaction()
            yield f

        f = compose(f()).next()
        f.addField('key.sub', 'value')
        f.addField('key.sub', 'othervalue')
        f.addField('key.sub', 'value')
        f.addField('key.sub', 'separatedbyvalue')
        list(compose(f.commit()))

        self.assertEquals(['add'], [m.name for m in intercept.calledMethods])
        self.assertEquals(
            dict(
                identifier='identifier',
                partname='extra',
                data=
                '<extra><key><sub>value</sub></key><key><sub>othervalue</sub></key><key><sub>value</sub></key><key><sub>separatedbyvalue</sub></key></extra>'
            ), intercept.calledMethods[0].kwargs)
Example #13
0
    def testShouldUnregister(self):
        # ... for testing purposes.
        def getRelevantHandlers():
            return [getsignal(sh)
                    for sh in SHUTDOWN_SIGNALS]  # SIGTERM, SIGINT

        persistable = CallTrace('Observer',
                                emptyGeneratorMethods=['handleShutdown'])
        top = be((
            Observable(),
            (persistable, ),
        ))
        reactor = CallTrace('reactor')

        pre = getRelevantHandlers()
        handler = registerShutdownHandler(statePath=self.tempdir,
                                          server=top,
                                          reactor=reactor)

        _with = getRelevantHandlers()
        handler.unregister()

        post = getRelevantHandlers()

        # shutdownHandler set
        ourHandlerSet = set(_with).difference(set(pre))
        self.assertEqual(1, len(ourHandlerSet))
        ourHandler = ourHandlerSet.pop()

        # shutdownHandler removed on .unregister()
        self.assertEqual(pre, post)

        # shutdownHandler is who he's supposed to be.
        self.assertEqual('_handleShutdown', ourHandler.__func__.__name__)
        self.assertEqual(handler, ourHandler.__self__)
Example #14
0
 def testGetRecordWithRepositoryIdentifier(self):
     oaigetrecord = OaiGetRecord(OaiRepository(identifier='example.org'))
     record = CallTrace('record')
     record.identifier = 'id0'
     record.prefixes = ['oai_dc']
     record.sets = []
     record.isDeleted = False
     observer = CallTrace(
         returnValues={
             'isKnownPrefix': True,
             'getRecord': record
         },
         emptyGeneratorMethods=['oaiWatermark', 'oaiRecord'])
     oaigetrecord.addObserver(observer)
     consume(
         oaigetrecord.getRecord(arguments=dict(
             verb=['GetRecord'],
             metadataPrefix=['oai_dc'],
             identifier=['oai:example.org:id0'],
         ),
                                **self.httpkwargs))
     self.assertEqual(
         ['getRecord', 'isKnownPrefix', 'oaiWatermark', 'oaiRecord'],
         observer.calledMethodNames())
     self.assertEqual(dict(identifier='id0', metadataPrefix='oai_dc'),
                      observer.calledMethods[0].kwargs)
    def testTcpPacketListener(self):
        reactor = CallTrace('reactor')
        observer = CallTrace('observer',
                             emptyGeneratorMethods=['handlePacket'])
        tcpPacketListener = TcpPacketListener(reactor, port=1234)
        server = be((Observable(), (tcpPacketListener, (observer, ))))
        list(compose(server.once.observer_init()))

        self.assertEquals('addReader', reactor.calledMethods[0].name)
        acceptCallback = reactor.calledMethods[0].args[1]

        data = "TEST" * 1024
        sok = socket()
        sok.connect(('localhost', 1234))
        bytesSent = sok.send(data)
        self.assertEquals(len(data), bytesSent)
        sok.close()

        acceptCallback()
        self.assertEquals('addReader', reactor.calledMethods[1].name)
        handleCallback = reactor.calledMethods[1].args[1]
        handleCallback()
        self.assertEquals('addProcess', reactor.calledMethods[-2].name)
        reactor.calledMethods[-2].args[0]()

        self.assertEquals(['observer_init', 'handlePacket'],
                          observer.calledMethodNames())
        self.assertEquals(data, observer.calledMethods[1].kwargs['data'])
        self.assertEquals('removeReader', reactor.calledMethods[-2].name)
        self.assertEquals('removeProcess', reactor.calledMethods[-1].name)
Example #16
0
    def testServicePrefixSearch(self):
        observer = CallTrace('lucene')

        def prefixSearch(**kwargs):
            raise StopIteration(LuceneResponse(total=2, hits=['aap', 'noot']))
            yield

        observer.methods['prefixSearch'] = prefixSearch
        service = LuceneRemoteService(CallTrace('reactor'))
        service.addObserver(observer)
        body = dumps({
            'message': 'prefixSearch',
            'kwargs': {
                'prefix': 'aap',
                'fieldname': 'field',
                'limit': 10,
            }
        })
        result = ''.join(
            compose(
                service.handleRequest(path='/__lucene_remote__',
                                      Method="POST",
                                      Body=body)))
        header, body = result.split('\r\n' * 2)
        self.assertTrue('Content-Type: application/json' in header, header)
        response = LuceneResponse.fromJson(body)
        self.assertEquals(2, response.total)
        self.assertEquals(['aap', 'noot'], response.hits)
        self.assertEquals(['prefixSearch'], observer.calledMethodNames())
        m = observer.calledMethods[0]
        self.assertEquals('aap', m.kwargs['prefix'])
        self.assertEquals(10, m.kwargs['limit'])
        self.assertEquals('field', m.kwargs['fieldname'])
 def setUp(self):
     self.tempdir = mkdtemp()
     self.target = CallTrace("Target")
     self.target.path = self.tempdir
     self.target.oaiEnvelope = False
     logger = CallTrace("Logger")
     collection = None
     self.uploader = FileSystemUploader(self.target, logger, collection)
Example #18
0
    def testServiceExecuteQuery(self):
        observer = CallTrace('lucene')

        def executeQuery(**kwargs):
            raise StopIteration(LuceneResponse(total=2, hits=['aap', 'noot']))
            yield

        observer.methods['executeQuery'] = executeQuery
        service = LuceneRemoteService(CallTrace('reactor'))
        service.addObserver(observer)
        body = dumps({
            'message': 'executeQuery',
            'kwargs': {
                'cqlAbstractSyntaxTree': {
                    '__CQL_QUERY__': 'query AND field=value'
                },
                'start': 0,
                'stop': 10,
                'facets': [{
                    'fieldname': 'field',
                    'maxTerms': 5
                }],
                'filterQueries': [{
                    '__CQL_QUERY__': 'query=fiets'
                }],
                'joinQueries': {
                    'core1': {
                        '__CQL_QUERY__': 'query=test'
                    }
                }
            }
        })
        result = ''.join(
            compose(
                service.handleRequest(path='/__lucene_remote__',
                                      Method="POST",
                                      Body=body)))
        header, body = result.split('\r\n' * 2)
        self.assertTrue('Content-Type: application/json' in header,
                        header + body)
        response = LuceneResponse.fromJson(body)
        self.assertEquals(2, response.total)
        self.assertEquals(['aap', 'noot'], response.hits)
        self.assertEquals(['executeQuery'], observer.calledMethodNames())
        m = observer.calledMethods[0]
        self.assertEquals(parseString('query AND field=value'),
                          m.kwargs['cqlAbstractSyntaxTree'])
        self.assertEquals(0, m.kwargs['start'])
        self.assertEquals(10, m.kwargs['stop'])
        self.assertEquals([{
            'fieldname': 'field',
            'maxTerms': 5
        }], m.kwargs['facets'])
        self.assertEquals([parseString('query=fiets')],
                          m.kwargs['filterQueries'])
        self.assertEquals({'core1': parseString('query=test')},
                          m.kwargs['joinQueries'])
Example #19
0
 def newDNA(self, **kwargs):
     emptyGeneratorMethods = [kwargs.get('message', 'handle')]
     self.reactor = CallTrace('Reactor', returnValues={'addTimer': 'TOKEN'})
     self.observer = CallTrace('Observer', emptyGeneratorMethods=emptyGeneratorMethods, ignoredAttributes=['observer_init'])
     self.pc = PeriodicCall(self.reactor, **kwargs)
     self.dna = be((Observable(),
         (self.pc,
             (self.observer,),
         ),
     ))
Example #20
0
 def testCouldHaveInStorage(self):
     inputEvent = fromstring('<document><other/></document>')
     interceptor = CallTrace('Interceptor', ignoredAttributes=['getData', 'all_unknown', 'any_unknown', 'call_unknown'], methods={'add': yieldNothing})
     storage = CallTrace('Storage', ignoredAttributes=['add', 'all_unknown'])
     storage.returnValues['getData'] = '<one/>'
     v = createVenturiHelix([], [{'partname': 'one', 'xpath': '/document/one'}], interceptor, storage)
     list(compose(v.all.add('identifier', 'document', inputEvent)))
     self.assertEqual(['begin', 'add'], [m.name for m in interceptor.calledMethods])
     self.assertEqual('<one/>', lxmltostring(interceptor.calledMethods[1].kwargs['lxmlNode']))
     self.assertEqual(dict(identifier='identifier', name='one'), storage.calledMethods[1].kwargs)
Example #21
0
 def testReadFromStorageAsString(self):
     inputEvent = fromstring('<document/>')
     interceptor = CallTrace('Interceptor', ignoredAttributes=['getData', 'all_unknown', 'call_unknown'], methods={'add': yieldNothing})
     storage = CallTrace('Storage', ignoredAttributes=['add', 'all_unknown'])
     storage.returnValues['getData'] = '<some>this is partone</some>'
     v = createVenturiHelix([dict(partname='partone', xpath='/document/part[@name="partone"]/text()', asData=True)], [], interceptor, storage)
     list(compose(v.all.add('identifier', 'document', inputEvent)))
     self.assertEqual(['begin', 'add'], [m.name for m in interceptor.calledMethods])
     self.assertEqual('<some>this is partone</some>', interceptor.calledMethods[1].kwargs['data'])
     self.assertEqual(dict(identifier='identifier', name='partone'), storage.calledMethods[1].kwargs)
Example #22
0
    def testCallWithReturnValue(self):
        callTrace = CallTrace()
        callTrace.returnValues['simpleCall'] = 'OK'
        result = callTrace.simpleCall('argument one', 2)
        self.assertEqual('OK', result)

        callTrace = CallTrace()
        callTrace.methods['simpleCall'] = lambda x: x + 3
        result = callTrace.simpleCall(1)
        self.assertEqual(4, result)
Example #23
0
 def setUp(self):
     super(OnlyAddDeleteIfChangedTest, self).setUp()
     self.observer = CallTrace('storageAndMore',
                               emptyGeneratorMethods=['add', 'delete'],
                               returnValues={
                                   'getRecord': CallTrace(),
                                   'getData': 'data'
                               })
     self.top = be(
         (Observable(), (OnlyAddDeleteIfChanged(), (self.observer, ))))
Example #24
0
 def setUp(self):
     SeecrTestCase.setUp(self)
     ctx = CallTrace('CTX')
     tx = Transaction('TX')
     tx.locals = {'id': 'iden&tifier'}
     tx.name = "tsName"
     self.fxf = Fields2SolrDoc("tsName", "fields-partname")
     self.fxf.ctx = ctx
     self.fxf.ctx.tx = tx
     self.observer = CallTrace(methods={'add': add})
     self.fxf.addObserver(self.observer)
Example #25
0
 def testMapping(self):
     upload = CallTrace('upload')
     upload.id = 'id'
     upload.isDeleted = True
     mapping = CallTrace()
     mapping.returnValues['createUpload'] = upload
     self.harvest = OnlineHarvest(self.output)
     data = 'file://%s/mocktud/00002.xml' % self._testpath
     self.harvest.performMapping(None, data, mapping)
     self.assertEqual(['addObserver', 'mappingInfo', 'createUpload', 'createUpload', 'createUpload'], [m.name for m in mapping.calledMethods])
     for createUploadMethod in mapping.calledMethods[2:]:
         self.assertTrue(createUploadMethod.kwargs['doAsserts'])
Example #26
0
 def setUp(self, fieldRegistry=FieldRegistry()):
     super(LuceneTestCase, self).setUp()
     self._javaObjects = self._getJavaObjects()
     self._reactor = CallTrace('reactor', methods={'addTimer': lambda seconds, callback: CallTrace('timer')})
     self._defaultSettings = LuceneSettings(commitCount=1, commitTimeout=1, fieldRegistry=fieldRegistry)
     self.lucene = Lucene(
         join(self.tempdir, 'lucene'),
         reactor=self._reactor,
         settings=self._defaultSettings,
     )
     self.observer = CallTrace()
     self.lucene.addObserver(self.observer)
Example #27
0
 def testSetNameEscaped(self):
     repository = CallTrace(returnValues=dict(
         requestUrl='http://example.org'))
     observer = CallTrace(returnValues=dict(getAllSets=[('123&abc',
                                                         '123 & abc')]),
                          emptyGeneratorMethods=['oaiWatermark'])
     top = be((Observable(), (OaiListSets(repository), (observer, ))))
     response = asString(
         top.all.listSets(arguments=dict(verb=['ListSets'])))
     self.assertTrue(
         '<ListSets><set><setSpec>123&amp;abc</setSpec><setName>123 &amp; abc</setName></set></ListSets>'
         in response, response)
Example #28
0
 def testOnlySpecifiedMethods(self):
     trace = CallTrace(onlySpecifiedMethods=True)
     self.assertRaises(AttributeError, lambda: trace.someMethod())
     trace = CallTrace(returnValues={"someMethod": 'result'},
                       onlySpecifiedMethods=True)
     self.assertEqual('result', trace.someMethod())
     trace = CallTrace(methods={"someMethod": lambda: "result"},
                       onlySpecifiedMethods=True)
     self.assertEqual("result", trace.someMethod())
     trace = CallTrace(emptyGeneratorMethods=["someMethod"],
                       onlySpecifiedMethods=True)
     self.assertEqual(GeneratorType, type(trace.someMethod()))
Example #29
0
    def testDeleteIsAsynchronous(self):
        __callstack_var_tx__ = CallTrace('Transaction')
        __callstack_var_tx__.locals={}
        observer = CallTrace('observer')
        callable = lambda: None
        observer.returnValues['delete'] = (f for f in [callable])
        v = Venturi()
        v.addObserver(observer)

        result = list(compose(v.delete(identifier='identifier')))

        self.assertEqual([callable], result)
        self.assertEqual(['delete'], [m.name for m in observer.calledMethods])
Example #30
0
 def testNothing(self):
     __callstack_var_tx__ = CallTrace('TX')
     __callstack_var_tx__.locals = {'id': 'identifier'}
     intercept = CallTrace()
     fields2OaiRecord = Fields2OaiRecord()
     fields2OaiRecord.addObserver(intercept)
     def f():
         f = yield fields2OaiRecord.beginTransaction()
         yield f
     tx = next(compose(f()))
     tx.addField('set', ('setSpec', 'setName'))
     tx.commit()
     self.assertEqual(0, len(intercept.calledMethods))