def test_updatecheck_positive_critical_on_other_channel(self):
        app = ApplicationFactory.create(id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome')
        platform = PlatformFactory.create(name='win')
        channel = ChannelFactory.create(name='stable')
        channel2 = ChannelFactory.create(name='alpha')
        first_version = VersionFactory.create(
            app=app,
            platform=platform,
            channel=channel,
            version='13.0.782.110',
            file=SimpleUploadedFile('./chrome_installer_first.exe', b'_' * 23963192),
            file_size=23963192)
        first_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        first_version.save()

        critical_version = VersionFactory.create(
            is_critical=True,
            app=app,
            platform=platform,
            channel=channel2,
            version='13.0.782.111',
            file=SimpleUploadedFile('./chrome_installer_critical.exe', b'_' * 23963192),
            file_size=23963192)
        critical_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        critical_version.save()

        last_version = VersionFactory.create(
            app=app,
            platform=platform,
            channel=channel,
            version='13.0.782.112',
            file=SimpleUploadedFile('./chrome_installer.exe', b'_' * 23963192),
            file_size=23963192)
        last_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        last_version.save()

        Action.objects.create(
            version=last_version,
            arguments='--do-not-launch-chrome',
            event=EVENT_DICT_CHOICES['install'],
            run='chrome_installer.exe'
        )

        Action.objects.create(
            version=last_version,
            event=EVENT_DICT_CHOICES['postinstall'],
            other=dict(
                version='13.0.782.112',
                onsuccess='exitsilentlyonlaunchcmd',
            )
        )

        response = self.client.post(reverse('update'),
                                    fixtures.request_update_check, content_type='text/xml')

        self.assertEqual(response.status_code, 200)

        self.assertXmlDocument(response.content)
        self.assertXmlEquivalentOutputs(response.content,
                                        fixtures.response_update_check_positive)
    def test_updatecheck_positive_critical_on_other_channel(self):
        app = ApplicationFactory.create(id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome')
        platform = PlatformFactory.create(name='win')
        channel = ChannelFactory.create(name='stable')
        channel2 = ChannelFactory.create(name='alpha')
        first_version = VersionFactory.create(
            app=app,
            platform=platform,
            channel=channel,
            version='13.0.782.110',
            file=SimpleUploadedFile('./chrome_installer_first.exe', b'_' * 23963192),
            file_size=23963192)
        first_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        first_version.save()

        critical_version = VersionFactory.create(
            is_critical=True,
            app=app,
            platform=platform,
            channel=channel2,
            version='13.0.782.111',
            file=SimpleUploadedFile('./chrome_installer_critical.exe', b'_' * 23963192),
            file_size=23963192)
        critical_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        critical_version.save()

        last_version = VersionFactory.create(
            app=app,
            platform=platform,
            channel=channel,
            version='13.0.782.112',
            file=SimpleUploadedFile('./chrome_installer.exe', b'_' * 23963192),
            file_size=23963192)
        last_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        last_version.save()

        Action.objects.create(
            version=last_version,
            arguments='--do-not-launch-chrome',
            event=EVENT_DICT_CHOICES['install'],
            run='chrome_installer.exe'
        )

        Action.objects.create(
            version=last_version,
            event=EVENT_DICT_CHOICES['postinstall'],
            other=dict(
                version='13.0.782.112',
                onsuccess='exitsilentlyonlaunchcmd',
            )
        )

        response = self.client.post(reverse('update'),
                                    fixtures.request_update_check, content_type='text/xml')

        self.assertEqual(response.status_code, 200)

        self.assertXmlDocument(response.content)
        self.assertXmlEquivalentOutputs(response.content,
                                        fixtures.response_update_check_positive)
Exemple #3
0
    def setUp(self):
        self.app = ApplicationFactory(name='TestApp')
        self.channel = ChannelFactory(name='alpha')
        self.stable_channel = ChannelFactory(name='stable')
        self.win_v1 = VersionFactory(version='10.0.0.0',
                                     app=self.app,
                                     channel=self.channel)
        self.win_v2 = VersionFactory(version='42.0.1.0',
                                     app=self.app,
                                     channel=self.channel)
        self.win_stable_v = VersionFactory(version='23.0.0.0',
                                           app=self.app,
                                           channel=self.stable_channel)
        self.win_disabled_v = VersionFactory(version='55.0.2.0',
                                             app=self.app,
                                             channel=self.channel,
                                             is_enabled=False)

        self.mac_v1 = SparkleVersionFactory(short_version='10.0.0.0',
                                            version='0.0',
                                            app=self.app,
                                            channel=self.channel)
        self.mac_v2 = SparkleVersionFactory(short_version='42.0.1.0',
                                            version='1.0',
                                            app=self.app,
                                            channel=self.channel)
        self.mac_stable_v = SparkleVersionFactory(short_version='23.0.0.0',
                                                  version='0.0',
                                                  app=self.app,
                                                  channel=self.stable_channel)
        self.mac_disabled_v = SparkleVersionFactory(short_version='55.0.2.0',
                                                    version='2.0',
                                                    app=self.app,
                                                    channel=self.channel,
                                                    is_enabled=False)
        self.exp_res = {
            self.app.name: {
                "win": {
                    self.channel.name: {
                        "url": self.win_v2.file_absolute_url,
                        "version": self.win_v2.version
                    },
                    self.stable_channel.name: {
                        "url": self.win_stable_v.file_absolute_url,
                        "version": self.win_stable_v.version
                    }
                },
                "mac": {
                    self.channel.name: {
                        "url": self.mac_v2.file_absolute_url,
                        "version": self.mac_v2.short_version
                    },
                    self.stable_channel.name: {
                        "url": self.mac_stable_v.file_absolute_url,
                        "version": self.mac_stable_v.short_version
                    }
                }
            }
        }
Exemple #4
0
 def setUp(self):
     self.app = ApplicationFactory()
     self.a_platform = PlatformFactory(name='a')
     self.b_platform = PlatformFactory(name='b')
     self.empty_platform = PlatformFactory(name='empty')
     self.mac_platform = PlatformFactory(name='mac')
     VersionFactory(platform=self.a_platform, app=self.app)
     VersionFactory(platform=self.b_platform, app=self.app)
    def test_monitoring(self):
        for key in self.cache_keys:
            self.assertEqual(cache.get(key, 0), 0)

        VersionFactory.create(file_size=100)
        SparkleVersionFactory.create(file_size=100)
        Crash.objects.create(archive_size=80, minidump_size=20)
        Symbols.objects.create(file_size=100)
        Feedback.objects.create(screenshot_size=25, blackbox_size=25, attached_file_size=25, system_logs_size=25)

        monitoring_size()

        for key in self.cache_keys:
            self.assertEqual(cache.get(key), 100)
Exemple #6
0
    def test_updatecheck_positive_critical(self):
        app = ApplicationFactory.create(
            id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome')
        platform = PlatformFactory.create(name='win')
        channel = ChannelFactory.create(name='stable')
        first_version = VersionFactory.create(
            app=app,
            platform=platform,
            channel=channel,
            version='13.0.782.110',
            file=SimpleUploadedFile('./chrome_installer_first.exe',
                                    b'_' * 23963192),
            file_size=23963192)
        first_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        first_version.save()

        critical_version = VersionFactory.create(
            is_critical=True,
            app=app,
            platform=platform,
            channel=channel,
            version='13.0.782.111',
            file=SimpleUploadedFile('./chrome_installer_critical.exe',
                                    b'_' * 23963192),
            file_size=23963192)
        critical_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        critical_version.save()

        last_version = VersionFactory.create(app=app,
                                             platform=platform,
                                             channel=channel,
                                             version='13.0.782.112',
                                             file=SimpleUploadedFile(
                                                 './chrome_installer.exe',
                                                 b'_' * 23963192),
                                             file_size=23963192)
        last_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        last_version.save()

        response = self.client.post(reverse('update'),
                                    fixtures.request_update_check,
                                    content_type='text/xml')

        self.assertEqual(response.status_code, 200)

        self.assertXmlDocument(response.content)
        self.assertXmlEquivalentOutputs(
            response.content,
            fixtures.response_update_check_postitive_critical)
    def test_get_version_partial_update(self):
        userid = "{%s}" % UUID(int=1)
        userid_beta = "{%s}" % UUID(int=40)
        version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b''))
        version_beta = Version.objects.create(
            file=SimpleUploadedFile('./chrome_installer.exe', b''),
            app=version.app,
            platform=version.platform,
            channel=version.channel,
            version='39.0.0.0',
        )

        PartialUpdate.objects.create(version=version_beta,
                                     percent=5,
                                     start_date=datetime.now(),
                                     end_date=datetime.now(),
                                     active_users=ACTIVE_USERS_DICT_CHOICES['all'])

        self.assertEqual(version, get_version(version.app.pk,
                                              version.platform.name,
                                              version.channel.name,
                                              '36.0.2062.124',
                                              userid))

        self.assertEqual(version_beta, get_version(version.app.pk,
                                                   version.platform.name,
                                                   version.channel.name,
                                                   '36.0.2062.124',
                                                   userid_beta))
Exemple #8
0
 def test_create(self):
     version = VersionFactory.create()
     data = dict(event=1, version=version.pk)
     response = self.client.post(reverse(self.url), data, format='json')
     self.assertEqual(response.status_code, status.HTTP_201_CREATED)
     obj = Action.objects.get(id=response.data['id'])
     self.assertEqual(response.data, self.serializer(obj).data)
Exemple #9
0
    def test_data(self):
        app = ApplicationFactory.create(
            id='{430FD4D0-B729-4F61-AA34-91526481799D}', name='chrome')
        platform = PlatformFactory.create(name='win')
        channel = ChannelFactory.create(name='stable')
        obj = VersionFactory.create(app=app,
                                    platform=platform,
                                    channel=channel,
                                    version='13.0.782.112',
                                    file=SimpleUploadedFile(
                                        './chrome_installer.exe',
                                        b'_' * 23963192),
                                    file_size=23963192)
        obj.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        obj.save()

        Data.objects.create(app=app,
                            name=NAME_DATA_DICT_CHOICES['install'],
                            index='verboselogging',
                            value='app-specific values here')

        Data.objects.create(app=app, name=NAME_DATA_DICT_CHOICES['untrusted'])

        response = self.client.post(reverse('update'),
                                    fixtures.request_data,
                                    content_type='text/xml')

        self.assertEqual(response.status_code, 200)

        self.assertXmlDocument(response.content)
        self.assertXmlEquivalentOutputs(response.content,
                                        fixtures.response_data)
    def test_filter_by_enabled(self):
        version = VersionFactory.create(
            version='37.0.2062.125',
            file=SimpleUploadedFile('./chrome_installer.exe', False))
        version_disabled = VersionFactory.create(
            app=version.app,
            platform=version.platform,
            channel=version.channel,
            is_enabled=False,
            version='38.0.2062.125',
            file=SimpleUploadedFile('./chrome_installer2.exe', False))

        self.assertEqual(Version.objects.all().count(), 2)
        self.assertEqual(Version.objects.filter_by_enabled().count(), 1)
        self.assertIn(version, Version.objects.filter_by_enabled())
        self.assertNotIn(version_disabled, Version.objects.filter_by_enabled())
Exemple #11
0
 def test_create(self):
     version = VersionFactory.create()
     data = dict(event=1, version=version.pk)
     response = self.client.post(reverse(self.url), data, format='json')
     self.assertEqual(response.status_code, status.HTTP_201_CREATED)
     obj = Action.objects.get(id=response.data['id'])
     self.assertEqual(response.data, self.serializer(obj).data)
Exemple #12
0
    def test_get_attributes(self):
        ver = VersionFactory.create(
            file=SimpleUploadedFile('./chrome_installer.exe', False))
        action = Action(version=ver,
                        arguments='--do-not-launch-chrome',
                        event=EVENT_DICT_CHOICES['install'],
                        run='chrome_installer.exe')

        self.assertDictEqual(
            action.get_attributes(),
            dict(
                arguments='--do-not-launch-chrome',
                run='chrome_installer.exe',
            ))

        action = Action(version=ver,
                        terminateallbrowsers=True,
                        event=EVENT_DICT_CHOICES['postinstall'],
                        other=dict(version='13.0.782.112',
                                   onsuccess='exitsilentlyonlaunchcmd'))

        self.assertDictEqual(
            action.get_attributes(),
            dict(
                terminateallbrowsers='true',
                version='13.0.782.112',
                onsuccess='exitsilentlyonlaunchcmd',
            ))
Exemple #13
0
 def test_property(self):
     version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', ''))
     self.assertEqual(version.file_absolute_url,
                      'http://cache.pack.google.com/edgedl/chrome/install/782.112/chrome_installer.exe')
     self.assertEqual(version.file_package_name, 'chrome_installer.exe')
     self.assertEqual(version.file_url,
                      u'http://cache.pack.google.com/edgedl/chrome/install/782.112/')
Exemple #14
0
    def test_get_attributes(self):
        ver = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', False))
        action = Action(
            version=ver,
            arguments='--do-not-launch-chrome',
            event=EVENT_DICT_CHOICES['install'],
            run='chrome_installer.exe'
        )

        self.assertDictEqual(
            action.get_attributes(),
            dict(
                arguments='--do-not-launch-chrome',
                run='chrome_installer.exe',
            ))

        action = Action(
            version=ver,
            terminateallbrowsers=True,
            event=EVENT_DICT_CHOICES['postinstall'],
            other=dict(
                version='13.0.782.112',
                onsuccess='exitsilentlyonlaunchcmd')
        )

        self.assertDictEqual(
            action.get_attributes(),
            dict(
                terminateallbrowsers='true',
                version='13.0.782.112',
                onsuccess='exitsilentlyonlaunchcmd',
            )
        )
Exemple #15
0
    def test_filter_by_enabled(self):
        version = VersionFactory.create(
            version='37.0.2062.125',
            file=SimpleUploadedFile('./chrome_installer.exe', False))
        version_disabled = VersionFactory.create(
            app=version.app,
            platform=version.platform,
            channel=version.channel,
            is_enabled=False,
            version='38.0.2062.125',
            file=SimpleUploadedFile('./chrome_installer2.exe', False))

        self.assertEqual(Version.objects.all().count(), 2)
        self.assertEqual(Version.objects.filter_by_enabled().count(), 1)
        self.assertIn(version, Version.objects.filter_by_enabled())
        self.assertNotIn(version_disabled, Version.objects.filter_by_enabled())
Exemple #16
0
    def test_data(self):
        app = ApplicationFactory.create(id='{430FD4D0-B729-4F61-AA34-91526481799D}', name='chrome')
        platform = PlatformFactory.create(name='win')
        channel = ChannelFactory.create(name='stable')
        obj = VersionFactory.create(
            app=app,
            platform=platform,
            channel=channel,
            version='13.0.782.112',
            file=SimpleUploadedFile('./chrome_installer.exe', b'_' * 23963192),
            file_size=23963192)
        obj.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        obj.save()

        Data.objects.create(
            app=app,
            name=NAME_DATA_DICT_CHOICES['install'],
            index='verboselogging',
            value='app-specific values here')

        Data.objects.create(
            app=app,
            name=NAME_DATA_DICT_CHOICES['untrusted'])

        response = self.client.post(reverse('update'),
                                    fixtures.request_data, content_type='text/xml')

        self.assertEqual(response.status_code, 200)

        self.assertXmlDocument(response.content)
        self.assertXmlEquivalentOutputs(response.content,
                                        fixtures.response_data)
    def test_omaha_versions(self, mocked_get_logger):
        gpm['Version__limit_size'] = 1
        version_size = 1000 * 1024 * 1023
        versions = VersionFactory.create_batch(2, file_size=version_size)
        deleted_version = versions[0]
        self.assertEqual(Version.objects.count(), 2)

        extra_meta = dict(count=1,
                          reason='manual',
                          meta=True,
                          log_id='36446dc3-ae7c-42ad-ae4e-6a826dcf0a00',
                          model='Version',
                          limit_duplicated=None,
                          limit_size=1,
                          limit_days=None,
                          size='999.0 MB')
        log_extra_msg = add_extra_to_log_message('Manual cleanup',
                                                 extra=extra_meta)

        extra = dict(Version_id=deleted_version.id,
                     element_created=deleted_version.created.strftime(
                         "%d. %B %Y %I:%M%p"),
                     log_id='36446dc3-ae7c-42ad-ae4e-6a826dcf0a00')
        log_msg = add_extra_to_log_message('Manual cleanup element',
                                           extra=extra)
        mocked_logger = mocked_get_logger.return_value

        with patch('uuid.uuid4') as mocked_uuid4:
            mocked_uuid4.side_effect = (uuid.UUID(
                '36446dc3-ae7c-42ad-ae4e-6a826dcf0a%02d' % x)
                                        for x in range(100))
            deferred_manual_cleanup(['omaha', 'Version'], limit_size=1)
        self.assertEqual(mocked_logger.info.call_count, 2)
        mocked_logger.info.assert_any_call(log_extra_msg)
        mocked_logger.info.assert_any_call(log_msg)
Exemple #18
0
 def test_serializer(self):
     today = date.today()
     version = VersionFactory()
     data = dict(
         is_enabled=True,
         exclude_new_users=True,
         version=version,
         end_date=str(date(today.year, today.month, today.day)),
         percent=51.0,
         start_date=str(date(today.year, today.month, today.day)),
         active_users=1,
     )
     partial = PartialUpdateFactory(**data)
     self.assertDictEqual(
         PartialUpdateSerializer(partial).data,
         dict(
             id=partial.pk,
             is_enabled=partial.is_enabled,
             exclude_new_users=partial.exclude_new_users,
             version=partial.version.pk,
             end_date=partial.end_date,
             percent=partial.percent,
             start_date=partial.start_date,
             active_users=partial.active_users,
         ))
Exemple #19
0
 def test_property_s3_meta_data(self):
     version = VersionFactory.create(
         file=SimpleUploadedFile('./chrome_installer.exe', ''))
     self.assertEqual(version.file_package_name, 'chrome_installer.exe')
     self.assertEqual(
         version.file_url,
         'http://cache.pack.google.com/edgedl/chrome/install/782.112/')
     self.assertEqual(version.size, 123)
Exemple #20
0
    def test_monitoring(self):
        for key in self.cache_keys:
            self.assertEqual(cache.get(key, 0), 0)

        VersionFactory.create(file_size=100)
        SparkleVersionFactory.create(file_size=100)
        Crash.objects.create(archive_size=80, minidump_size=20)
        Symbols.objects.create(file_size=100)
        Feedback.objects.create(screenshot_size=25,
                                blackbox_size=25,
                                attached_file_size=25,
                                system_logs_size=25)

        monitoring_size()

        for key in self.cache_keys:
            self.assertEqual(cache.get(key), 100)
Exemple #21
0
 def test_property_default_storage(self):
     version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', ''))
     _url = 'http://example.com/static/media/build/%s/%s/%s/37.0.2062.124/chrome_installer.exe' \
           % (version.app.name, version.channel.name, version.platform.name)
     self.assertEqual(version.file_absolute_url, _url)
     self.assertEqual(version.file_package_name, 'chrome_installer.exe')
     _url = u'http://example.com/static/media/build/%s/%s/%s/37.0.2062.124/' \
            % (version.app.name, version.channel.name, version.platform.name)
     self.assertEqual(version.file_url, _url)
Exemple #22
0
 def test_version_upload_to(self):
     version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', False))
     self.assertEqual(version_upload_to(version, 'chrome_installer.exe'),
                      'build/{}/{}/{}/{}/chrome_installer.exe'.format(
                          version.app.name,
                          version.channel.name,
                          version.platform.name,
                          version.version,
                          version.file.name,
                      ))
Exemple #23
0
    def test_updatecheck_positive_critical(self):
        app = ApplicationFactory.create(id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome')
        platform = PlatformFactory.create(name='win')
        channel = ChannelFactory.create(name='stable')
        first_version = VersionFactory.create(
            app=app,
            platform=platform,
            channel=channel,
            version='13.0.782.110',
            file=SimpleUploadedFile('./chrome_installer_first.exe', b'_' * 23963192),
            file_size=23963192)
        first_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        first_version.save()

        critical_version = VersionFactory.create(
            is_critical=True,
            app=app,
            platform=platform,
            channel=channel,
            version='13.0.782.111',
            file=SimpleUploadedFile('./chrome_installer_critical.exe', b'_' * 23963192),
            file_size=23963192)
        critical_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        critical_version.save()

        last_version = VersionFactory.create(
            app=app,
            platform=platform,
            channel=channel,
            version='13.0.782.112',
            file=SimpleUploadedFile('./chrome_installer.exe', b'_' * 23963192),
            file_size=23963192)
        last_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        last_version.save()

        response = self.client.post(reverse('update'),
                                    fixtures.request_update_check, content_type='text/xml')

        self.assertEqual(response.status_code, 200)

        self.assertXmlDocument(response.content)
        self.assertXmlEquivalentOutputs(response.content,
                                        fixtures.response_update_check_postitive_critical)
Exemple #24
0
 def test_property_default_storage(self):
     version = VersionFactory.create(
         file=SimpleUploadedFile('./chrome_installer.exe', ''))
     _url = 'http://example.com/static/media/build/%s/%s/%s/37.0.2062.124/chrome_installer.exe' \
           % (version.app.name, version.channel.name, version.platform.name)
     self.assertEqual(version.file_absolute_url, _url)
     self.assertEqual(version.file_package_name, 'chrome_installer.exe')
     _url = u'http://example.com/static/media/build/%s/%s/%s/37.0.2062.124/' \
            % (version.app.name, version.channel.name, version.platform.name)
     self.assertEqual(version.file_url, _url)
Exemple #25
0
 def test_version_upload_to(self):
     version = VersionFactory.create(
         file=SimpleUploadedFile('./chrome_installer.exe', False))
     self.assertEqual(
         version_upload_to(version, 'chrome_installer.exe'),
         'build/{}/{}/{}/{}/chrome_installer.exe'.format(
             version.app.name,
             version.channel.name,
             version.platform.name,
             version.version,
             version.file.name,
         ))
Exemple #26
0
    def test_userid_counting(self):
        now = datetime.utcnow()
        userid = '{D0BBD725-742D-44ae-8D46-0231E881D58E}'
        user_id = get_id(userid)
        appid1 = '{430FD4D0-B729-4F61-AA34-91526481799D}'
        appid2 = '{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}'

        request_events = DayEvents('request', now.year, now.month, now.day)
        app1_events = DayEvents('request:%s' % appid1, now.year, now.month, now.day)
        app2_events = DayEvents('request:%s' % appid2, now.year, now.month, now.day)

        self.assertEqual(len(request_events), 0)
        self.assertEqual(len(app1_events), 0)
        self.assertEqual(len(app2_events), 0)


        app = ApplicationFactory.create(id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome')
        platform = PlatformFactory.create(name='win')
        channel = ChannelFactory.create(name='stable')
        obj = VersionFactory.create(
            app=app,
            platform=platform,
            channel=channel,
            version='13.0.782.112',
            file=SimpleUploadedFile('./chrome_installer.exe', b'_' * 23963192))
        obj.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        obj.save()

        Action.objects.create(
            version=obj,
            arguments='--do-not-launch-chrome',
            event=EVENT_DICT_CHOICES['install'],
            run='chrome_installer.exe'
        )

        Action.objects.create(
            version=obj,
            event=EVENT_DICT_CHOICES['postinstall'],
            other=dict(
                version='13.0.782.112',
                onsuccess='exitsilentlyonlaunchcmd',
            )
        )

        self.client.post(reverse('update'),
                         fixtures.request_update_check, content_type='text/xml')

        self.assertEqual(len(request_events), 1)
        self.assertEqual(len(app1_events), 1)
        self.assertEqual(len(app2_events), 1)
        self.assertTrue(user_id in request_events)
        self.assertTrue(user_id in app1_events)
        self.assertTrue(user_id in app2_events)
Exemple #27
0
    def test_userid_counting(self):
        now = datetime.utcnow()
        userid = '{D0BBD725-742D-44ae-8D46-0231E881D58E}'
        user_id = get_id(userid)
        appid1 = '{430FD4D0-B729-4F61-AA34-91526481799D}'
        appid2 = '{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}'

        request_events = DayEvents('request', now.year, now.month, now.day)
        app1_events = DayEvents('request:%s' % appid1, now.year, now.month,
                                now.day)
        app2_events = DayEvents('request:%s' % appid2, now.year, now.month,
                                now.day)

        self.assertEqual(len(request_events), 0)
        self.assertEqual(len(app1_events), 0)
        self.assertEqual(len(app2_events), 0)

        app = ApplicationFactory.create(
            id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome')
        platform = PlatformFactory.create(name='win')
        channel = ChannelFactory.create(name='stable')
        obj = VersionFactory.create(app=app,
                                    platform=platform,
                                    channel=channel,
                                    version='13.0.782.112',
                                    file=SimpleUploadedFile(
                                        './chrome_installer.exe',
                                        b'_' * 23963192))
        obj.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        obj.save()

        Action.objects.create(version=obj,
                              arguments='--do-not-launch-chrome',
                              event=EVENT_DICT_CHOICES['install'],
                              run='chrome_installer.exe')

        Action.objects.create(version=obj,
                              event=EVENT_DICT_CHOICES['postinstall'],
                              other=dict(
                                  version='13.0.782.112',
                                  onsuccess='exitsilentlyonlaunchcmd',
                              ))

        self.client.post(reverse('update'),
                         fixtures.request_update_check,
                         content_type='text/xml')

        self.assertEqual(len(request_events), 1)
        self.assertEqual(len(app1_events), 1)
        self.assertEqual(len(app2_events), 1)
        self.assertTrue(user_id in request_events)
        self.assertTrue(user_id in app1_events)
        self.assertTrue(user_id in app2_events)
Exemple #28
0
 def test_update(self):
     version = VersionFactory.create()
     data = dict(event=1, version=version.pk)
     response = self.client.post(reverse(self.url), data, format='json')
     self.assertEqual(response.status_code, status.HTTP_201_CREATED)
     obj_id = response.data['id']
     obj = Action.objects.get(id=obj_id)
     self.assertEqual(response.data, self.serializer(obj).data)
     url = reverse(self.url_detail, kwargs=dict(pk=obj_id))
     response = self.client.patch(url, dict(event=2))
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     obj = Action.objects.get(id=obj_id)
     self.assertEqual(obj.event, 2)
Exemple #29
0
 def test_update(self):
     version = VersionFactory.create()
     data = dict(event=1, version=version.pk)
     response = self.client.post(reverse(self.url), data, format='json')
     self.assertEqual(response.status_code, status.HTTP_201_CREATED)
     obj_id = response.data['id']
     obj = Action.objects.get(id=obj_id)
     self.assertEqual(response.data, self.serializer(obj).data)
     url = reverse(self.url_detail, kwargs=dict(pk=obj_id))
     response = self.client.patch(url, dict(event=2))
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     obj = Action.objects.get(id=obj_id)
     self.assertEqual(obj.event, 2)
    def test_get_version(self):
        userid = '{D0BBD725-742D-44ae-8D46-0231E881D58E}'
        version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b''))

        self.assertEqual(version, get_version(version.app.pk,
                                              version.platform.name,
                                              version.channel.name,
                                              '36.0.2062.124',
                                              userid))

        self.assertEqual(version, get_version(version.app.pk,
                                              version.platform.name,
                                              version.channel.name,
                                              '',
                                              userid))
Exemple #31
0
 def test_create(self):
     version = VersionFactory.create()
     data = dict(
         is_enabled=True,
         exclude_new_users=True,
         version=version.pk,
         end_date=str(date.today()),
         percent=51.0,
         start_date=str(date.today()),
         active_users=1,
     )
     response = self.client.post(reverse(self.url), data, format='json')
     self.assertEqual(response.status_code, status.HTTP_201_CREATED)
     obj = PartialUpdate.objects.get(id=response.data['id'])
     self.assertEqual(response.data, self.serializer(obj).data)
Exemple #32
0
 def test_create(self):
     version = VersionFactory.create()
     data = dict(
         is_enabled=True,
         exclude_new_users=True,
         version=version.pk,
         end_date=str(date.today()),
         percent=51.0,
         start_date=str(date.today()),
         active_users=1,
     )
     response = self.client.post(reverse(self.url), data, format='json')
     self.assertEqual(response.status_code, status.HTTP_201_CREATED)
     obj = PartialUpdate.objects.get(id=response.data['id'])
     self.assertEqual(response.data, self.serializer(obj).data)
    def test_auto_fill_file_size(self):
        version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b' ' * 10))
        data = dict(
            app=version.app.id,
            platform=version.platform.id,
            channel=version.channel.id,
            version='4.3.2.1',
            release_notes=version.release_notes,
            file=version.file,
            file_hash=version.file_hash,
        )

        new_version = VersionSerializer(data=data)
        self.assertTrue(new_version.is_valid())
        new_version_instance = new_version.save()
        self.assertEqual(new_version_instance.file_size, 10)
 def test_serializer(self):
     version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', False))
     self.assertDictEqual(VersionSerializer(version).data, dict(
         id=version.id,
         is_enabled=version.is_enabled,
         app=version.app.id,
         platform=version.platform.id,
         channel=version.channel.id,
         version=str(version.version),
         release_notes=version.release_notes,
         file=version.file.url,
         file_hash=version.file_hash,
         file_size=version.file_size,
         created=version.created.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
         modified=version.modified.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
     ))
Exemple #35
0
    def test_auto_fill_file_size(self):
        version = VersionFactory.create(
            file=SimpleUploadedFile('./chrome_installer.exe', b' ' * 10))
        data = dict(
            app=version.app.id,
            platform=version.platform.id,
            channel=version.channel.id,
            version='4.3.2.1',
            release_notes=version.release_notes,
            file=version.file,
            file_hash=version.file_hash,
        )

        new_version = VersionSerializer(data=data)
        self.assertTrue(new_version.is_valid())
        new_version_instance = new_version.save()
        self.assertEqual(new_version_instance.file_size, 10)
    def test_get_app_version_channel(self):
        userid = '{D0BBD725-742D-44ae-8D46-0231E881D58E}'
        channel_beta = Channel.objects.create(name="beta")
        version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b''))
        version_beta = Version.objects.create(
            file=SimpleUploadedFile('./chrome_installer.exe', b''),
            app=version.app,
            platform=version.platform,
            channel=channel_beta,
            version='39.0.0.0',
        )

        self.assertEqual(version_beta, get_version(version.app.pk,
                                              version.platform.name,
                                              channel_beta.name,
                                              '',
                                              userid))
Exemple #37
0
 def test_serializer(self):
     version = VersionFactory.create(
         file=SimpleUploadedFile('./chrome_installer.exe', False))
     self.assertDictEqual(
         VersionSerializer(version).data,
         dict(
             id=version.id,
             is_enabled=version.is_enabled,
             app=version.app.id,
             platform=version.platform.id,
             channel=version.channel.id,
             version=str(version.version),
             release_notes=version.release_notes,
             file=version.file.url,
             file_hash=version.file_hash,
             file_size=version.file_size,
             created=version.created.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
             modified=version.modified.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
         ))
    def test_get_app_version_active_users(self):
        userid = "{%s}" % UUID(int=1)
        userid_beta = "{%s}" % UUID(int=40)
        userid_beta_not_active = "{%s}" % UUID(int=60)
        version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b''))
        version_beta = Version.objects.create(
            file=SimpleUploadedFile('./chrome_installer.exe', b''),
            app=version.app,
            platform=version.platform,
            channel=version.channel,
            version='39.0.0.0',
        )


        id = get_id(userid_beta)
        mark_event('request', id)

        PartialUpdate.objects.create(version=version_beta,
                                     percent=5,
                                     start_date=datetime.now(),
                                     end_date=datetime.now())

        self.assertEqual(version, get_version(version.app.pk,
                                              version.platform.name,
                                              version.channel.name,
                                              '36.0.2062.124',
                                              userid))

        self.assertEqual(version_beta, get_version(version.app.pk,
                                                   version.platform.name,
                                                   version.channel.name,
                                                   '36.0.2062.124',
                                                   userid_beta))

        self.assertEqual(version, get_version(version.app.pk,
                                              version.platform.name,
                                              version.channel.name,
                                              '36.0.2062.124',
                                              userid_beta_not_active))
Exemple #39
0
    def test_omaha_versions(self, mocked_get_logger):
        gpm['Version__limit_size'] = 1
        version_size = 1000*1024*1023
        versions = VersionFactory.create_batch(2, file_size=version_size)
        deleted_version = versions[0]
        self.assertEqual(Version.objects.count(), 2)

        extra_meta = dict(count=1, reason='manual', meta=True, log_id='36446dc3-ae7c-42ad-ae4e-6a826dcf0a00',
                          model='Version', limit_duplicated=None, limit_size=1, limit_days=None, size='999.0 MB')
        log_extra_msg = add_extra_to_log_message('Manual cleanup', extra=extra_meta)

        extra = dict(Version_id=deleted_version.id, element_created=deleted_version.created.strftime("%d. %B %Y %I:%M%p"),
                     log_id='36446dc3-ae7c-42ad-ae4e-6a826dcf0a00')
        log_msg = add_extra_to_log_message('Manual cleanup element', extra=extra)
        mocked_logger = mocked_get_logger.return_value

        with patch('uuid.uuid4') as mocked_uuid4:
            mocked_uuid4.side_effect = (uuid.UUID('36446dc3-ae7c-42ad-ae4e-6a826dcf0a%02d' % x) for x in range(100))
            deferred_manual_cleanup(['omaha', 'Version'], limit_size=1)
        self.assertEqual(mocked_logger.info.call_count, 2)
        mocked_logger.info.assert_any_call(log_extra_msg)
        mocked_logger.info.assert_any_call(log_msg)
Exemple #40
0
 def test_pre_save_callback(self):
     version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b''))
     self.assertEqual(version.file.size, 0)
     self.assertEqual(version.file_hash, '2jmj7l5rSw0yVb/vlWAYkK/YBwk=')
Exemple #41
0
 def test_factory(self):
     version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', False))
     self.assertTrue(Version.objects.get(id=version.id))
 def test_get_size(self):
     file_size = 42
     VersionFactory.create_batch(10, file_size=file_size)
     size = Version.objects.get_size()
     self.assertEqual(size, file_size*10)
Exemple #43
0
 def test_pre_save_callbac(self):
     version = VersionFactory.create(
         file=SimpleUploadedFile('./chrome_installer.exe', b''))
     self.assertEqual(version.file.size, 0)
     self.assertEqual(version.file_hash, '2jmj7l5rSw0yVb/vlWAYkK/YBwk=')
Exemple #44
0
 def test_factory(self):
     version = VersionFactory.create(
         file=SimpleUploadedFile('./chrome_installer.exe', False))
     self.assertTrue(Version.objects.get(id=version.id))
 def test_get_size(self):
     file_size = 42
     VersionFactory.create_batch(10, file_size=file_size)
     size = Version.objects.get_size()
     self.assertEqual(size, file_size * 10)