예제 #1
0
    def test_update_jobs___Ignore_job2_after_update___event_fired_with_new_ignore_status(self):

        jobOne = Job('job1', JobStatus.OK)
        jobTwo = Job('job2', JobStatus.FAILING)
        self.jenkins.list_jobs().AndReturn([jobOne, jobTwo])
        self.jenkins.list_jobs().AndReturn([jobOne, jobTwo])
        self.event.fire([JobModel(jobOne, False), JobModel(jobTwo, False)])
        self.event.fire([JobModel(jobOne, False), JobModel(jobTwo, True)])
        self.mocks.ReplayAll()

        model = Model(self.jenkins, self.logger, self.event)
        model.update_jobs()
        model.ignore_job('job2')

        mox.Verify(self.event)
예제 #2
0
    def test_put_no_content(self):
        """
        Don't try to update from a no-content response.

        """
        class BasicMost(self.cls):
            name = fields.Field()
            value = fields.Field()

        request = {
            'uri': 'http://example.com/bwuh',
            'headers': {
                'accept': 'application/json'
            },
        }
        content = """{"name": "Molly", "value": 80}"""
        h = utils.mock_http(request, content)
        b = BasicMost.get('http://example.com/bwuh', http=h)
        self.assertEquals(b.name, 'Molly')
        mox.Verify(h)

        headers = {
            'accept': 'application/json',
            'content-type': 'application/json',
            'if-match': '7',
        }
        request = dict(uri='http://example.com/bwuh',
                       method='PUT',
                       headers=headers,
                       body=content)
        response = dict(content="", status=204)
        h = utils.mock_http(request, response)
        b.put(http=h)
        mox.Verify(h)

        self.assertEquals(b.name, 'Molly')
예제 #3
0
 def testIsDone(self):
     print "testing isDone"
     self.path = array([[0, 1, 1, 1], [1, 2, 2, 2], [2, 9, 9, 9],
                        [3, 28, 28, 28]])
     self.path = self.path.transpose()
     self.mock_leg_model.getFootPos().AndReturn([0, 0, 0])
     self.mock_leg_model.jointAnglesFromFootPos(ReturnTrue(self.path))
     mox.Replay(self.mock_leg_model)
     ifm = InterpolatedFootMove(self.mock_leg_model, self.path)
     ifm.update()
     self.assertFalse(ifm.isDone())
     global_time.updateDelta(4)
     ifm.update()
     self.assertTrue(ifm.isDone())
     mox.Verify(self.mock_leg_model)
예제 #4
0
    def testOk(self):
        self.mox.StubOutWithMock(os, 'makedirs')
        os.makedirs(self.dir, 0700)
        self.mox.StubOutWithMock(os, 'mknod')
        os.mknod(self.path, 0600 | stat.S_IFREG)

        result = object()
        open_ = self.mox.CreateMockAnything()
        open_(self.path, 'r').AndReturn(result)
        mox.Replay(open_)

        self.mox.ReplayAll()
        self.assertEqual(util.SafeOpen(self.path, 'r', open_=open_), result)
        self.mox.VerifyAll()
        mox.Verify(open_)
예제 #5
0
    def test_index(self):
        class Toybox(self.cls):
            pass

        url = 'http://example.com/whahay'
        headers = {"accept": "application/json"}
        request = dict(uri=url, headers=headers)
        content = """{"entries":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}"""
        h = utils.mock_http(request, content)
        mox.Replay(h)

        b = Toybox.get('http://example.com/whahay', http=h)
        self.assertEqual(b[7], 7)

        mox.Verify(h)
 def testRunStateChanged(self):
     projects = self.Projects(2)
     # 0 is STOP so it'll be looked for
     self.to_be_found = projects[0]
     self.looked_for = False
     projects[1].runstate = launcher.Project.STATE_RUN
     frame_mock = mox.MockObject(launcher.MainFrame)
     tc = launcher.TaskController(FakeAppController())
     tc._FindThreadForProject = self._FindThreadForProject
     tc.SetModelsViews(frame=frame_mock)
     mox.Replay(frame_mock)
     for project in projects:
         tc.RunStateChanged(project)
     mox.Verify(frame_mock)
     self.assertTrue(self.looked_for)
예제 #7
0
    def test_post(self):

        class BasicMost(self.cls):
            name  = fields.Field()
            value = fields.Field()

        class ContainerMost(self.cls):
            name = fields.Field()

        request = {
            'uri': 'http://example.com/asfdasf',
            'headers': {'accept': 'application/json'},
        }
        content = """{"name": "CBS"}"""
        h = utils.mock_http(request, content)
        c = ContainerMost.get('http://example.com/asfdasf', http=h)
        self.assertEquals(c.name, 'CBS')
        mox.Verify(h)

        b = BasicMost(name='Fred Friendly', value=True)

        headers = {
            'accept': 'application/json',
            'content-type': 'application/json',
        }
        content = """{"name": "Fred Friendly", "value": true}"""
        request = dict(uri='http://example.com/asfdasf', method='POST',
                       body=content, headers=headers)
        response = dict(content=content, status=201, etag='xyz',
                        location='http://example.com/fred')
        h = utils.mock_http(request, response)
        c.post(b, http=h)
        mox.Verify(h)

        self.assertEquals(b._location, 'http://example.com/fred')
        self.assertEquals(b._etag, 'xyz')
예제 #8
0
    def testResizeListener(self):
        rl = self.mox.CreateMock(window.IResizeListener)

        # Expectations
        rl.windowResized(mox.IsA(window.ResizeEvent))

        # Start actual test
        mox.Replay(rl)

        # Add listener and send a resize event -> should end up
        # in listener once
        self._window.addListener(rl, window.IResizeListener)
        self.sendResize(self._window)

        # Ensure listener was called once
        mox.Verify(rl)

        # Remove the listener and send close event -> should not
        # end up in listener
        self._window.removeListener(rl, window.IResizeListener)
        self.sendResize(self._window)

        # Ensure listener still has been called only once
        mox.Verify(rl)
예제 #9
0
    def testTwoTries(self):
        """Test a two try cache."""
        original = mox.MockAnything()
        original.getHostByName('google.com').AndReturn(
            defer.fail(
                failure.Failure(error.DNSLookupError('Fake DNS failure'))))
        original.getHostByName('google.com').AndReturn(
            defer.succeed('1.2.3.4'))
        mox.Replay(original)

        cache = dnsRetry.RetryingDNS(original,
                                     tries=2,
                                     sleep=time.SleepManager(0, 0, 0))
        result = cache.getHostByName('google.com')
        self.assertEquals(result, '1.2.3.4')
        mox.Verify(original)
    def testDashboard(self):
        projects = self.Projects(5)
        tc = launcher.TaskController(FakeAppController())
        frame_mock = mox.MockObject(launcher.MainFrame)
        frame_mock.SelectedProjects().MultipleTimes().AndReturn(projects)
        mox.Replay(frame_mock)
        tc.SetModelsViews(frame=frame_mock)
        browsed = []

        def Browse(project):
            browsed.append(project)

        tc._BrowseDashboardForProject = Browse
        tc.Dashboard(None)
        self.assertEqual(sorted(projects), sorted(browsed))
        mox.Verify(frame_mock)
예제 #11
0
    def test_not_found(self):
        self.assert_(self.cls.NotFound)

        class Huh(self.cls):
            name = fields.Field()

        self.assert_(Huh.NotFound)

        request = {
            'uri': 'http://example.com/bwuh',
            'headers': {'accept': 'application/json'},
        }
        response = {'content': '', 'status': 404}
        http = utils.mock_http(request, response)
        self.assertRaises(Huh.NotFound, lambda: Huh.get('http://example.com/bwuh', http=http).name)
        mox.Verify(http)
예제 #12
0
  def testFallbackFailsFirstTime(self):
    """Test a cache with fallback."""
    original = mox.MockAnything()
    original.getHostByName('google.com').AndReturn(
        defer.fail(failure.Failure(error.DNSLookupError('Fake DNS failure'))))
    original.getHostByName('google.com').AndReturn(
        defer.succeed('1.2.3.4'))
    mox.Replay(original)

    cache = dnsCache.CachingDNS(original, timeout = 1)
    result = cache.getHostByName('google.com')
    self.assertTrue(isinstance(result.result, failure.Failure))
    result.addErrback(lambda _: None) # Consume the error.
    result = cache.getHostByName('google.com')
    self.assertEquals(result.result, '1.2.3.4')
    mox.Verify(original)
예제 #13
0
    def test_schedule_consecutive_rep_2_grade(self):
        date_from = date.today() + timedelta(4)
        date_to = date.today() + timedelta(9)
        self._global_data.get_workloads(date_from, date_to, None).AndReturn(
            [63, 40, 33, 20, 18, 50])
        self._global_data.get_avg_difficulties(date_from, date_to).AndReturn(
            [6.0, 2.2, 1.5, 1.6, 3.5, 5.1])
        mox.Replay(self._global_data)

        alg_data = dict(num_reviews=3, avg_grade=3.7, difficulty=1.70)
        next_review, alg_data = self._algorithm.schedule(alg_data=alg_data,
                                                         priority=PRIORITY_LOW,
                                                         grade=2)

        mox.Verify(self._global_data)
        assert_equals(date.today() + timedelta(8), next_review.date())
        self._assert_new_alg_data(4, 3.28, 3.56, FINAL_DRILL, alg_data)
예제 #14
0
    def testOneTry(self):
        """Test a single try cache."""
        original = mox.MockAnything()
        original.getHostByName('google.com').AndReturn(
            defer.fail(
                failure.Failure(error.DNSLookupError('Fake DNS failure'))))
        original.getHostByName('google.com').AndReturn(
            defer.succeed('1.2.3.4'))
        mox.Replay(original)

        cache = dnsRetry.RetryingDNS(original, tries=1)
        self.assertRaises(error.DNSLookupError, cache.getHostByName,
                          'google.com')

        result = cache.getHostByName('google.com')
        self.assertEquals(result, '1.2.3.4')
        mox.Verify(original)
예제 #15
0
    def test_get(self):

        class BasicMost(self.cls):
            name  = fields.Field()
            value = fields.Field()

        request = {
            'uri': 'http://example.com/ohhai',
            'headers': {'accept': 'application/json', 'x-test': 'boo'},
        }
        content = """{"name": "Fred", "value": 7}"""

        h = utils.mock_http(request, content)
        b = BasicMost.get('http://example.com/ohhai', http=h,
                          headers={"x-test": "boo"})
        self.assertEquals(b.name, 'Fred')
        self.assertEquals(b.value, 7)
        mox.Verify(h)
예제 #16
0
    def test_get_bad_encoding(self):

        class BasicMost(self.cls):
            name  = fields.Field()
            value = fields.Field()

        request = {
            'uri': 'http://example.com/ohhai',
            'headers': {'accept': 'application/json'},
        }
        content = """{"name": "Fred\xf1", "value": "image by \xefndrew Example"}"""

        h = utils.mock_http(request, content)
        b = BasicMost.get('http://example.com/ohhai', http=h)
        self.assertEquals(b.name, u"Fred\ufffd")
        # Bad characters are replaced with the unicode Replacement Character 0xFFFD.
        self.assertEquals(b.value, u"image by \ufffdndrew Example")
        mox.Verify(h)
예제 #17
0
    def test_Constructor_ModelFiresStatusChangedEvent_ViewSetStatusCalled(
            self):

        mocks = mox.Mox()

        model = mocks.CreateMock(IModel)
        view = mocks.CreateMock(IView)
        event = Event()

        model.status_changed_event().AndReturn(event)
        view.set_status('some status string', 'status message')

        mocks.ReplayAll()

        presenter = Presenter(model, view)  # @UnusedVariable
        event.fire('some status string', 'status message')

        mox.Verify(view)
 def testOK(self):
   """Dialog comes up and a change is made."""
   dialog_mock = mox.MockObject(launcher.PreferenceView)
   dialog_mock.ShowModal().AndReturn(wx.ID_OK)
   python_pref = launcher.Preferences.PREF_PYTHON
   appengine_pref = launcher.Preferences.PREF_APPENGINE
   deploy_pref = launcher.Preferences.PREF_DEPLOY_SERVER
   editor_pref = launcher.Preferences.PREF_EDITOR
   dialog_mock.Get(python_pref).InAnyOrder().AndReturn('python-2')
   dialog_mock.Get(appengine_pref).InAnyOrder().AndReturn(None)
   dialog_mock.Get(deploy_pref).InAnyOrder().AndReturn(None)
   dialog_mock.Get(editor_pref).InAnyOrder().AndReturn(None)
   dialog_mock.Destroy()
   mox.Replay(dialog_mock)
   pc = FakeController(self.prefs, dialog_mock)
   pc.ShowModal()
   mox.Verify(dialog_mock)
   self.assertEqual('python-2', self.prefs[python_pref])
예제 #19
0
 def testCubic(self):
     print "testing cubic interpolation"
     self.path = array([[0, 1, 1, 1], [1, 2, 2, 2], [2, 9, 9, 9],
                        [3, 28, 28, 28]])
     self.path = self.path.transpose()
     self.mock_leg_model.getFootPos().AndReturn([0, 0, 0])
     self.mock_leg_model.jointAnglesFromFootPos(
         ArraysEqual(array([.0, .0, .0])))
     self.mock_leg_model.jointAnglesFromFootPos(
         ArraysEqual(array([.001, .001, .001])))
     self.mock_leg_model.jointAnglesFromFootPos(
         ArraysEqual(array([.008, .008, .008])))
     self.mock_leg_model.jointAnglesFromFootPos(
         ArraysEqual(array([.027, .027, .027])))
     self.mock_leg_model.jointAnglesFromFootPos(
         ArraysEqual(array([.064, .064, .064])))
     mox.Replay(self.mock_leg_model)
     ifm = InterpolatedFootMove(self.mock_leg_model, self.path)
     print "TEST 1"
     #target_foot_pos = array([ifm.stop_watch.getTime()**3, ifm.stop_watch.getTime()**3, ifm.stop_watch.getTime()**3])
     print "expected target_foot_pos = ", array([.0, .0, .0])
     self.assertFalse(ifm.isDone())
     ifm.update()
     global_time.updateDelta(0.1)
     print "TEST 2"
     #target_foot_pos = array([ifm.stop_watch.getTime()**3, ifm.stop_watch.getTime()**3, ifm.stop_watch.getTime()**3])
     print "expected target_foot_pos = ", array([.001, .001, .001])
     ifm.update()
     global_time.updateDelta(0.1)
     print "TEST 3"
     #target_foot_pos = array([ifm.stop_watch.getTime()**3, ifm.stop_watch.getTime()**3, ifm.stop_watch.getTime()**3])
     print "expected target_foot_pos = ", array([.008, .008, .008])
     ifm.update()
     global_time.updateDelta(0.1)
     print "TEST 4"
     #target_foot_pos = array([ifm.stop_watch.getTime()**3, ifm.stop_watch.getTime()**3, ifm.stop_watch.getTime()**3])
     print "expected target_foot_pos = ", array([.027, .027, .027])
     ifm.update()
     global_time.updateDelta(0.1)
     print "TEST 5"
     #target_foot_pos = array([ifm.stop_watch.getTime()**3, ifm.stop_watch.getTime()**3, ifm.stop_watch.getTime()**3])
     print "expected target_foot_pos = ", array([.064, .064, .064])
     ifm.update()
     mox.Verify(self.mock_leg_model)
 def testAdd(self):
     """Tests both Add() and AddNew()."""
     for attr in ('Add', 'AddNew'):
         p = launcher.Project('/tmp/himom', 8123)
         # Avoid UI with a NoAskController
         controller = NoAskController(self.app, p)
         # Mock table to confirm AddProject() gets called
         table_mock = mox.MockObject(launcher.MainTable)
         table_mock.AddProject(p)
         table_mock._projects = None
         mox.Replay(table_mock)
         controller.SetModelsViews(table=table_mock)
         # UI should be noop, and table.AddProject() should be called in here
         getattr(controller, attr)(None)
         mox.Verify(table_mock)
     # Make sure the path makes it to the controller.
     c = NoAskController(self.app, None)
     c.Add(None, '/Path/To/Oblivion')
     self.assertEqual('/Path/To/Oblivion', c._path)
예제 #21
0
  def testFallback(self):
    """Test a cache with fallback."""
    original = mox.MockAnything()
    original.getHostByName('google.com').AndReturn(
        defer.succeed('1.2.3.4'))
    original.getHostByName('google.com').AndReturn(
        defer.fail(failure.Failure(error.DNSLookupError('Fake DNS failure'))))
    original.getHostByName('google.com').AndReturn(
        defer.succeed('9.8.7.6'))
    mox.Replay(original)

    cache = dnsCache.CachingDNS(original, timeout = 0)
    result = cache.getHostByName('google.com')
    self.assertEquals(result.result, '1.2.3.4')
    result = cache.getHostByName('google.com')
    self.assertEquals(result.result, '1.2.3.4')
    result = cache.getHostByName('google.com')
    self.assertEquals(result.result, '9.8.7.6')
    mox.Verify(original)
예제 #22
0
    def test_create___Job_status_is_unknown___No_enable_or_disable_added(self):

        job_model = JobModel(Job('name', JobStatus.UNKNOWN), False)
        self.qtgui.QAction(mox.IgnoreArg(),
                           mox.IgnoreArg(),
                           triggered='ignore callback').InAnyOrder().AndReturn(
                               'ignore/unignore action')
        self.qtgui.QAction(
            mox.IgnoreArg(), mox.IgnoreArg(),
            triggered='unignore callback').InAnyOrder().AndReturn(
                'ignore/unignore action')
        self.menu.addAction('ignore/unignore action')
        self.mocks.ReplayAll()

        factory = gui.jobs.ContextMenuFactory(self.parent, self.qtgui)
        factory.create(job_model, 'ignore callback', 'unignore callback',
                       'enable callback', 'disable callback')

        mox.Verify(self.menu)
예제 #23
0
    def test_create_JobIsDisabled_AddEnableAction(self):

        job_model = JobModel(Job('name', JobStatus.DISABLED), True)
        self.qtgui.QAction(mox.IgnoreArg(),
                           mox.IgnoreArg(),
                           triggered=mox.IgnoreArg()).InAnyOrder().AndReturn(
                               'ignore/unignore action')
        self.qtgui.QAction('Enable', self.parent,
                           triggered='enable callback').InAnyOrder().AndReturn(
                               'enable action')
        self.menu.addAction(mox.IgnoreArg()).InAnyOrder()
        self.menu.addAction('enable action').InAnyOrder()
        self.mocks.ReplayAll()

        factory = gui.jobs.ContextMenuFactory(self.parent, self.qtgui)
        factory.create(job_model, 'ignore callback', 'unignore callback',
                       'enable callback', 'disable callback')

        mox.Verify(self.menu)
예제 #24
0
    def test_updateStatus_JobsModelFiresFirstUpdateEventStatusUnknownAndMessageNone_StatusChangedEventNotFired(
            self):

        self.jobs_filter.filter_jobs(self.job_models).AndReturn(
            self.job_models)
        self.messageComposer.message(self.jobs).AndReturn(None)
        self.statusReader.status(self.jobs).AndReturn(JobStatus.UNKNOWN)
        self.mocks.ReplayAll()

        model = Model(
            self.jobsModel,  # @UnusedVariable
            self.jobs_filter,
            self.messageComposer,
            self.statusReader,
            self.statusEvent)

        self.jobsEvent.fire(self.job_models)

        mox.Verify(self.statusEvent)
예제 #25
0
    def test_delete_failure(self):

        class BasicMost(self.cls):
            name  = fields.Field()
            value = fields.Field()

        b = BasicMost(name='Molly', value=80)
        b._location = 'http://example.com/bwuh'
        b._etag = 'asfdasf'

        headers = {
            'accept':   'application/json',
            'if-match': 'asfdasf',
        }
        request  = dict(uri='http://example.com/bwuh', method='DELETE', headers=headers)
        response = dict(status=412)  # Precondition Failed

        h = utils.mock_http(request, response)
        self.assertRaises(BasicMost.PreconditionFailed, lambda: b.delete(http=h))
        mox.Verify(h)
예제 #26
0
    def test___set_jobs___Ignored_job___Ignored_job_gets_ignored_icon(self):

        jobs = [
            JobModel(Job('john', pyjenkins.job.JobStatus.FAILING), False),
            JobModel(Job('terry', pyjenkins.job.JobStatus.OK), True)
        ]

        self.qtgui.QListWidgetItem('failing icon',
                                   'john').AndReturn('item for john')
        self.qtgui.QListWidgetItem('ignored icon',
                                   'terry').AndReturn('item for terry')
        self.view.right_click_event().InAnyOrder().AndReturn(Event())
        self.view.set_list(['item for john', 'item for terry'])
        self.mocks.ReplayAll()

        adapter = gui.jobs.ListViewAdapter(self.view, self.media,
                                           self.menu_factory, self.qtgui)
        adapter.set_jobs(jobs)

        mox.Verify(self.view)
예제 #27
0
    def test_updateStatus_JobsModelFiresFirstUpdateEvent_StatusChangedEventFired(
            self):

        self.jobs_filter.filter_jobs(self.job_models).AndReturn(
            self.job_models)
        self.messageComposer.message(self.jobs).AndReturn('message')
        self.statusReader.status(self.jobs).AndReturn(JobStatus.FAILING)
        self.statusEvent.fire(JobStatus.FAILING, 'message')
        self.mocks.ReplayAll()

        model = Model(
            self.jobsModel,  # @UnusedVariable
            self.jobs_filter,
            self.messageComposer,
            self.statusReader,
            self.statusEvent)

        self.jobsEvent.fire(self.job_models)

        mox.Verify(self.statusEvent)
    def testSDKConsole(self):
        projects = self.Projects(5)
        tc = launcher.TaskController(FakeAppController())
        frame_mock = mox.MockObject(launcher.MainFrame)
        frame_mock.SelectedProjects().MultipleTimes().AndReturn(projects)
        mox.Replay(frame_mock)
        tc.SetModelsViews(frame=frame_mock)
        browsed_projects = []

        def FakeBrowse(project):
            browsed_projects.append(project)

        tc._BrowseAdminConsoleForProject = FakeBrowse
        # none are running so we expect no browsing
        tc.SdkConsole(None)
        self.assertFalse(browsed_projects)
        for i in (1, 3, 4):
            projects[i].runstate = launcher.Project.STATE_RUN
        tc.SdkConsole(None)
        self.assertEqual(3, len(browsed_projects))
        mox.Verify(frame_mock)
예제 #29
0
    def test_Constructor___View_fires_job_ignored_event___Model_ignore_job_called(self):

        mocks = mox.Mox()

        model = mocks.CreateMock(IModel)
        view = mocks.CreateMock(IView)
        job_ignored_event = Event()

        model.jobs_updated_event().AndReturn(Event())
        view.job_ignored_event().InAnyOrder().AndReturn(job_ignored_event)
        view.job_unignored_event().InAnyOrder().AndReturn(Event())
        view.job_enabled_event().InAnyOrder().AndReturn(Event())
        view.job_disabled_event().InAnyOrder().AndReturn(Event())
        model.ignore_job('spam')

        mocks.ReplayAll()

        presenter = Presenter(model, view)  # @UnusedVariable
        job_ignored_event.fire('spam')

        mox.Verify(model)
예제 #30
0
    def test_not_found_discrete(self):
        """Checks that the NotFound exceptions for different HttpObjects are
        really different classes, so you can catch them discretely and treat
        different unfound objects differently, like:

        >>> try:
        ...     h = Huh.get(huh_url)
        ...     w = What.get(what_url)
        ... except Huh.NotFound:
        ...     # oops, no Huh
        ... except What.NotFound:
        ...     # oops, no What

        This feature is not implemented.

        """
        class Huh(self.cls):
            pass

        class What(self.cls):
            pass

        def try_that(http):
            try:
                What.get('http://example.com/bwuh', http=http)
            # Let through What.NotFound only if it's not equivalent to Huh.NotFound.
            except Huh.NotFound:
                pass

        request = {
            'uri': 'http://example.com/bwuh',
            'headers': {
                'accept': 'application/json'
            },
        }
        response = dict(status=404)
        http = utils.MockedHttp(request, response)
        self.assertRaises(What.NotFound, lambda: try_that(http))
        mox.Verify(http)