Ejemplo n.º 1
0
    def test_post_bad_product_name(self):
        products = ProductVersions(config=self.config)

        ok_(not products.post(
            product='Spaces not allowed',
            version='',
        ))
Ejemplo n.º 2
0
    def test_get_basic(self):
        productversions = ProductVersions(config=self.config)
        now = self.now.date()
        lastweek = now - datetime.timedelta(days=7)

        # Find one exact match for one product and one version
        params = {
            "product": "Firefox",
            "version": "8.0",
        }
        res = productversions.get(**params)
        res_expected = {
            "hits": [{
                "is_featured": False,
                "version": "8.0",
                "throttle": 10.0,
                "start_date": lastweek,
                "end_date": lastweek,
                "has_builds": False,
                "product": "Firefox",
                "build_type": "Release",
                "is_rapid_beta": False,
            }],
            "total": 1
        }

        assert res['total'] == res_expected['total']
        assert sorted(res['hits'][0]) == sorted(res_expected['hits'][0])
        assert res['hits'] == res_expected['hits']
Ejemplo n.º 3
0
    def test_get_basic(self):
        productversions = ProductVersions(config=self.config)
        now = self.now.date()
        lastweek = now - datetime.timedelta(days=7)

        # Find one exact match for one product and one version
        params = {
            "product": "Firefox",
            "version": "8.0",
        }
        res = productversions.get(**params)
        res_expected = {
            "hits": [{
                "is_featured": False,
                "version": "8.0",
                "throttle": 10.0,
                "start_date": lastweek,
                "end_date": lastweek,
                "has_builds": False,
                "product": "Firefox",
                "build_type": "Release",
                "is_rapid_beta": False,
            }],
            "total": 1
        }

        eq_(res['total'], res_expected['total'])
        eq_(
            sorted(res['hits'][0]),
            sorted(res_expected['hits'][0])
        )
        eq_(res['hits'], res_expected['hits'])
Ejemplo n.º 4
0
    def test_post_bad_product_name(self):
        products = ProductVersions(config=self.config)

        ok_(not products.post(
            product='Spaces not allowed',
            version='',
        ))
Ejemplo n.º 5
0
    def test_filter_by_start_date(self):
        productversions = ProductVersions(config=self.config)
        now = self.now.date()

        res = productversions.get(start_date='>=' + now.isoformat())
        assert res['total'] == 4
        res = productversions.get(start_date='<' + now.isoformat())
        assert res['total'] == 1
Ejemplo n.º 6
0
    def test_filter_by_start_date(self):
        productversions = ProductVersions(config=self.config)
        now = self.now.date()

        res = productversions.get(start_date='>=' + now.isoformat())
        eq_(res['total'], 4)
        res = productversions.get(start_date='<' + now.isoformat())
        eq_(res['total'], 1)
Ejemplo n.º 7
0
    def test_filter_by_end_date(self):
        productversions = ProductVersions(config=self.config)
        now = self.now.date()
        nextweek = now + datetime.timedelta(days=7)

        res = productversions.get(end_date='=' + nextweek.isoformat())
        assert res['total'] == 3
        for hit in res['hits']:
            assert hit['end_date'] == nextweek
Ejemplo n.º 8
0
    def test_filter_by_end_date(self):
        productversions = ProductVersions(config=self.config)
        now = self.now.date()
        nextweek = now + datetime.timedelta(days=7)

        res = productversions.get(end_date='=' + nextweek.isoformat())
        eq_(res['total'], 3)
        for hit in res['hits']:
            eq_(hit['end_date'], nextweek)
Ejemplo n.º 9
0
    def test_filter_by_build_type(self):
        productversions = ProductVersions(config=self.config)

        res = productversions.get(build_type=['Beta'], )
        eq_(res['total'], 1)
        for hit in res['hits']:
            eq_(hit['build_type'], 'Beta')

        res = productversions.get(build_type=['JUNK'], )
        eq_(res['total'], 0)
Ejemplo n.º 10
0
    def test_filter_by_featured(self):
        productversions = ProductVersions(config=self.config)

        res = productversions.get(is_featured=True)
        assert len(res['hits']) == 1
        assert res['total'] == 1
        assert all(x['is_featured'] for x in res['hits'])
        res = productversions.get(is_featured=False)
        assert res['total'] == 4
        assert len(res['hits']) == 4
        assert all(not x['is_featured'] for x in res['hits'])
Ejemplo n.º 11
0
    def test_filter_by_featured(self):
        productversions = ProductVersions(config=self.config)

        res = productversions.get(is_featured=True)
        eq_(len(res['hits']), 1)
        eq_(res['total'], 1)
        ok_(all(x['is_featured'] for x in res['hits']))
        res = productversions.get(is_featured=False)
        eq_(res['total'], 4)
        eq_(len(res['hits']), 4)
        ok_(all(not x['is_featured'] for x in res['hits']))
Ejemplo n.º 12
0
    def test_filter_by_featured(self):
        productversions = ProductVersions(config=self.config)

        res = productversions.get(is_featured=True)
        eq_(len(res['hits']), 1)
        eq_(res['total'], 1)
        ok_(all(x['is_featured'] for x in res['hits']))
        res = productversions.get(is_featured=False)
        eq_(res['total'], 4)
        eq_(len(res['hits']), 4)
        ok_(all(not x['is_featured'] for x in res['hits']))
Ejemplo n.º 13
0
    def test_filter_by_build_type(self):
        productversions = ProductVersions(config=self.config)

        res = productversions.get(
            build_type=['Beta'],
        )
        assert res['total'] == 1
        for hit in res['hits']:
            assert hit['build_type'] == 'Beta'

        res = productversions.get(
            build_type=['JUNK'],
        )
        assert res['total'] == 0
Ejemplo n.º 14
0
    def test_filter_by_build_type(self):
        productversions = ProductVersions(config=self.config)

        res = productversions.get(
            build_type=['Beta'],
        )
        eq_(res['total'], 1)
        for hit in res['hits']:
            eq_(hit['build_type'], 'Beta')

        res = productversions.get(
            build_type=['JUNK'],
        )
        eq_(res['total'], 0)
Ejemplo n.º 15
0
    def test_filter_by_is_rapid_beta(self):
        productversions = ProductVersions(config=self.config)

        res = true_results = productversions.get(is_rapid_beta=True)
        assert res['total'] == 1
        for hit in res['hits']:
            assert hit['is_rapid_beta']

        res = false_results = productversions.get(is_rapid_beta=False)
        assert res['total'] == 4
        for hit in res['hits']:
            assert not hit['is_rapid_beta']

        both_results = productversions.get()
        assert both_results['total'] == true_results['total'] + false_results['total']
Ejemplo n.º 16
0
    def test_filter_by_is_rapid_beta(self):
        productversions = ProductVersions(config=self.config)

        res = true_results = productversions.get(is_rapid_beta=True)
        eq_(res['total'], 1)
        for hit in res['hits']:
            ok_(hit['is_rapid_beta'])

        res = false_results = productversions.get(is_rapid_beta=False)
        eq_(res['total'], 4)
        for hit in res['hits']:
            ok_(not hit['is_rapid_beta'])

        both_results = productversions.get()
        eq_(both_results['total'],
            true_results['total'] + false_results['total'])
Ejemplo n.º 17
0
    def test_get_with_one_product_multiple_versions(self):
        productversions = ProductVersions(config=self.config)
        now = self.now.date()
        nextweek = now + datetime.timedelta(days=7)

        params = {
            "product": "Fennec",
            "version": ["11.0.1", "12.0b1"],
        }
        res = productversions.get(**params)
        res_expected = {
            "hits": [
                {
                    "is_featured": False,
                    "version": "12.0b1",
                    "throttle": 100.0,
                    "start_date": now,
                    "end_date": nextweek,
                    "has_builds": True,
                    "product": "Fennec",
                    "build_type": "Beta",
                    "is_rapid_beta": False,
                },
                {
                    "is_featured": False,
                    "version": "11.0.1",
                    "throttle": 10.0,
                    "start_date": now,
                    "end_date": now,
                    "has_builds": False,
                    "product": "Fennec",
                    "build_type": "Release",
                    "is_rapid_beta": False,
                }
            ],
            "total": 2
        }

        eq_(res['total'], res_expected['total'])
        eq_(
            sorted(res['hits'][0]),
            sorted(res_expected['hits'][0])
        )
        eq_(res['hits'][0], res_expected['hits'][0])
        eq_(res['hits'][1], res_expected['hits'][1])
Ejemplo n.º 18
0
    def test_filter_by_is_rapid_beta(self):
        productversions = ProductVersions(config=self.config)

        res = true_results = productversions.get(is_rapid_beta=True)
        eq_(res['total'], 1)
        for hit in res['hits']:
            ok_(hit['is_rapid_beta'])

        res = false_results = productversions.get(is_rapid_beta=False)
        eq_(res['total'], 4)
        for hit in res['hits']:
            ok_(not hit['is_rapid_beta'])

        both_results = productversions.get()
        eq_(
            both_results['total'],
            true_results['total'] + false_results['total']
        )
Ejemplo n.º 19
0
    def test_post(self):
        products = ProductVersions(config=self.config)

        assert products.post(product='KillerApp', version='1.0')

        # let's check certain things got written to certain tables
        cursor = self.connection.cursor()
        try:
            # expect there to be a new product
            cursor.execute(
                'select product_name from products '
                "where product_name=%s",
                ('KillerApp',)
            )
            product_name, = cursor.fetchone()
            assert product_name, 'KillerApp'
        finally:
            self.connection.rollback()
Ejemplo n.º 20
0
    def test_get_with_one_product_multiple_versions(self):
        productversions = ProductVersions(config=self.config)
        now = self.now.date()
        nextweek = now + datetime.timedelta(days=7)

        params = {
            "product": "Fennec",
            "version": ["11.0.1", "12.0b1"],
        }
        res = productversions.get(**params)
        res_expected = {
            "hits": [
                {
                    "is_featured": False,
                    "version": "12.0b1",
                    "throttle": 100.0,
                    "start_date": now,
                    "end_date": nextweek,
                    "has_builds": True,
                    "product": "Fennec",
                    "build_type": "Beta",
                    "is_rapid_beta": False,
                },
                {
                    "is_featured": False,
                    "version": "11.0.1",
                    "throttle": 10.0,
                    "start_date": now,
                    "end_date": now,
                    "has_builds": False,
                    "product": "Fennec",
                    "build_type": "Release",
                    "is_rapid_beta": False,
                }
            ],
            "total": 2
        }

        assert res['total'] == res_expected['total']
        assert sorted(res['hits'][0]) == sorted(res_expected['hits'][0])
        assert res['hits'][0] == res_expected['hits'][0]
        assert res['hits'][1] == res_expected['hits'][1]
Ejemplo n.º 21
0
    def _create_iter(self):
        hits = ProductVersions(config=self.config).get(
            active=True, product=self.config.product)['hits']
        versions = [
            x['version'] for x in hits if not x['version'].endswith('b')
        ]
        assert versions, "No active versions"

        # convert a datetime.date object to datetime.datetime
        dt = datetime.datetime(
            self.config.date.year,
            self.config.date.month,
            self.config.date.day,
        ).replace(tzinfo=UTC)
        return self.new_crash_source.new_crashes(
            dt,
            product=self.config.product,
            versions=versions,
        )
Ejemplo n.º 22
0
    def test_filter_by_active(self):
        productversions = ProductVersions(config=self.config)
        now = self.now.date()
        nextweek = now + datetime.timedelta(days=7)

        res = active_results = productversions.get(active=True)
        eq_(res['total'], 4)
        res_expected = {
            "hits":
                [
                    {
                        "product": "Firefox",
                        "version": "9.0",
                        "start_date": now,
                        "end_date": nextweek,
                        "throttle": 100.00,
                        "is_featured": True,
                        "build_type": "Nightly",
                        "has_builds": True,
                        "is_rapid_beta": False,
                    },
                    {
                        "product": "Thunderbird",
                        "version": "10.0.2b",
                        "start_date": now,
                        "end_date": nextweek,
                        "throttle": 10.00,
                        "is_featured": False,
                        "build_type": "Release",
                        "has_builds": False,
                        "is_rapid_beta": True,
                    },
                    {
                        "product": "Fennec",
                        "version": "12.0b1",
                        "start_date": now,
                        "end_date": nextweek,
                        "throttle": 100.00,
                        "is_featured": False,
                        "build_type": "Beta",
                        "has_builds": True,
                        "is_rapid_beta": False,
                    },
                    {
                        "product": "Fennec",
                        "version": "11.0.1",
                        "start_date": now,
                        "end_date": now,
                        "throttle": 10.00,
                        "is_featured": False,
                        "build_type": "Release",
                        "has_builds": False,
                        "is_rapid_beta": False,
                    },
                ],
            "total": 3
        }
        eq_(res['hits'][0], res_expected['hits'][0])
        eq_(res['hits'][1], res_expected['hits'][1])
        eq_(res['hits'][2], res_expected['hits'][2])
        eq_(res['hits'][3], res_expected['hits'][3])
        for hit in res['hits']:
            ok_(hit['end_date'] >= now, hit)

        res = not_active_results = productversions.get(active=False)
        eq_(res['total'], 1)

        both_results = productversions.get()
        eq_(
            both_results['total'],
            active_results['total'] + not_active_results['total']
        )
Ejemplo n.º 23
0
    def test_get_no_parameter_returning_all(self):
        productversions = ProductVersions(config=self.config)
        now = self.now.date()
        lastweek = now - datetime.timedelta(days=7)
        nextweek = now + datetime.timedelta(days=7)

        # Test products list is returned with no parameters
        # Note that the expired version is not returned
        res = productversions.get()
        res_expected = {
            "hits":
                [
                    {
                        "product": "Firefox",
                        "version": "9.0",
                        "start_date": now,
                        "end_date": nextweek,
                        "throttle": 100.00,
                        "is_featured": True,
                        "build_type": "Nightly",
                        "has_builds": True,
                        "is_rapid_beta": False,
                    },
                    {
                        "product": "Firefox",
                        "version": "8.0",
                        "start_date": lastweek,
                        "end_date": lastweek,
                        "throttle": 10.00,
                        "is_featured": False,
                        "build_type": "Release",
                        "has_builds": False,
                        "is_rapid_beta": False,
                    },
                    {
                        "product": "Thunderbird",
                        "version": "10.0.2b",
                        "start_date": now,
                        "end_date": nextweek,
                        "throttle": 10.00,
                        "is_featured": False,
                        "build_type": "Release",
                        "has_builds": False,
                        "is_rapid_beta": True,
                    },
                    {
                        "product": "Fennec",
                        "version": "12.0b1",
                        "start_date": now,
                        "end_date": nextweek,
                        "throttle": 100.00,
                        "is_featured": False,
                        "build_type": "Beta",
                        "has_builds": True,
                        "is_rapid_beta": False,
                    },
                    {
                        "product": "Fennec",
                        "version": "11.0.1",
                        "start_date": now,
                        "end_date": now,
                        "throttle": 10.00,
                        "is_featured": False,
                        "build_type": "Release",
                        "has_builds": False,
                        "is_rapid_beta": False,

                    }
                ],
            "total": 5
        }

        assert res['total'] == res_expected['total']
        assert res['total'] == len(res['hits'])
        # same keys
        keys = set(res['hits'][0].keys())
        expected_keys = set(res_expected['hits'][0].keys())
        assert keys == expected_keys
        assert res['hits'] == res_expected['hits']
Ejemplo n.º 24
0
    def test_get_no_parameter_returning_all(self):
        productversions = ProductVersions(config=self.config)
        now = self.now.date()
        lastweek = now - datetime.timedelta(days=7)
        nextweek = now + datetime.timedelta(days=7)

        # Test products list is returned with no parameters
        # Note that the expired version is not returned
        res = productversions.get()
        res_expected = {
            "hits":
                [
                    {
                        "product": "Firefox",
                        "version": "9.0",
                        "start_date": now,
                        "end_date": nextweek,
                        "throttle": 100.00,
                        "is_featured": True,
                        "build_type": "Nightly",
                        "has_builds": True,
                        "is_rapid_beta": False,
                    },
                    {
                        "product": "Firefox",
                        "version": "8.0",
                        "start_date": lastweek,
                        "end_date": lastweek,
                        "throttle": 10.00,
                        "is_featured": False,
                        "build_type": "Release",
                        "has_builds": False,
                        "is_rapid_beta": False,
                    },
                    {
                        "product": "Thunderbird",
                        "version": "10.0.2b",
                        "start_date": now,
                        "end_date": nextweek,
                        "throttle": 10.00,
                        "is_featured": False,
                        "build_type": "Release",
                        "has_builds": False,
                        "is_rapid_beta": True,
                    },
                    {
                        "product": "Fennec",
                        "version": "12.0b1",
                        "start_date": now,
                        "end_date": nextweek,
                        "throttle": 100.00,
                        "is_featured": False,
                        "build_type": "Beta",
                        "has_builds": True,
                        "is_rapid_beta": False,
                    },
                    {
                        "product": "Fennec",
                        "version": "11.0.1",
                        "start_date": now,
                        "end_date": now,
                        "throttle": 10.00,
                        "is_featured": False,
                        "build_type": "Release",
                        "has_builds": False,
                        "is_rapid_beta": False,

                    }
                ],
            "total": 5
        }

        eq_(res['total'], res_expected['total'])
        assert res['total'] == len(res['hits'])
        # same keys
        keys = set(res['hits'][0].keys())
        expected_keys = set(res_expected['hits'][0].keys())
        eq_(keys, expected_keys)
        eq_(len(res['hits']), len(res_expected['hits']))
        eq_(res['hits'], res_expected['hits'])
Ejemplo n.º 25
0
    def test_filter_by_active(self):
        productversions = ProductVersions(config=self.config)
        now = self.now.date()
        nextweek = now + datetime.timedelta(days=7)

        res = active_results = productversions.get(active=True)
        assert res['total'] == 4
        res_expected = {
            "hits":
                [
                    {
                        "product": "Firefox",
                        "version": "9.0",
                        "start_date": now,
                        "end_date": nextweek,
                        "throttle": 100.00,
                        "is_featured": True,
                        "build_type": "Nightly",
                        "has_builds": True,
                        "is_rapid_beta": False,
                    },
                    {
                        "product": "Thunderbird",
                        "version": "10.0.2b",
                        "start_date": now,
                        "end_date": nextweek,
                        "throttle": 10.00,
                        "is_featured": False,
                        "build_type": "Release",
                        "has_builds": False,
                        "is_rapid_beta": True,
                    },
                    {
                        "product": "Fennec",
                        "version": "12.0b1",
                        "start_date": now,
                        "end_date": nextweek,
                        "throttle": 100.00,
                        "is_featured": False,
                        "build_type": "Beta",
                        "has_builds": True,
                        "is_rapid_beta": False,
                    },
                    {
                        "product": "Fennec",
                        "version": "11.0.1",
                        "start_date": now,
                        "end_date": now,
                        "throttle": 10.00,
                        "is_featured": False,
                        "build_type": "Release",
                        "has_builds": False,
                        "is_rapid_beta": False,
                    },
                ],
            "total": 3
        }
        assert res['hits'][0] == res_expected['hits'][0]
        assert res['hits'][1] == res_expected['hits'][1]
        assert res['hits'][2] == res_expected['hits'][2]
        assert res['hits'][3] == res_expected['hits'][3]
        for hit in res['hits']:
            assert hit['end_date'] >= now

        res = not_active_results = productversions.get(active=False)
        assert res['total'] == 1

        both_results = productversions.get()
        assert both_results['total'] == active_results['total'] + not_active_results['total']