Пример #1
0
 def test_Query_remote_mpl4(self):
     self._set_remote()
     p = 'nsa.z < 0.12 and ifu.name = 19*'
     q = Query(searchfilter=p, mode='remote')
     r = q.run()
     self.assertEqual([], q.joins)
     self.assertEqual(163, r.totalcount)  # MPL-4 count
Пример #2
0
class TestResultsBase(MarvinTest):
    @classmethod
    def setUpClass(cls):
        super(TestResultsBase, cls).setUpClass()

    @classmethod
    def tearDownClass(cls):
        pass

    def setUp(self):
        self._reset_the_config()
        self.set_sasurl('local')
        self.mode = self.init_mode
        config.setMPL('MPL-5')
        config.forceDbOn()

        self.filter = 'nsa.z < 0.1 and cube.plate==8485'
        self.columns = [
            'cube.mangaid', 'cube.plate', 'cube.plateifu', 'ifu.name', 'nsa.z'
        ]
        self.remotecols = [u'mangaid', u'plate', u'plateifu', u'name', u'z']
        self.coltoparam = OrderedDict([('mangaid', 'cube.mangaid'),
                                       ('plate', 'cube.plate'),
                                       ('plateifu', 'cube.plateifu'),
                                       ('name', 'ifu.name'), ('z', 'nsa.z')])
        self.paramtocol = OrderedDict([('cube.mangaid', 'mangaid'),
                                       ('cube.plate', 'plate'),
                                       ('cube.plateifu', 'plateifu'),
                                       ('ifu.name', 'name'), ('nsa.z', 'z')])

        self.res = (u'1-209232', 8485, u'8485-1901', u'1901', 0.0407447)

        self.resdict = {
            '1': (u'1-43148', 8135, u'8135-6101', u'6101', 0.0108501),
            '10': (u'1-167079', 8459, u'8459-1901', u'1901', 0.015711),
            '11': (u'1-167075', 8459, u'8459-12704', u'12704', 0.0158584),
            '21': (u'1-113567', 7815, u'7815-12701', u'12701', 0.0167432),
            '31': (u'1-322048', 8552, u'8552-12705', u'12705', 0.0172298),
            '36': (u'1-252151', 8335, u'8335-9102', u'9102', 0.0174864),
            '41': (u'1-378182', 8134, u'8134-12705', u'12705', 0.0178659),
            '46': (u'1-252126', 8335, u'8335-3703', u'3703', 0.0181555)
        }

        self.q = Query(searchfilter=self.filter, mode=self.mode)

    def tearDown(self):
        pass

    def _set_remote(self, mode='local', limit=100):
        self.mode = 'remote'
        self.q = Query(searchfilter=self.filter, mode='remote', limit=limit)

    def _run_query(self):
        r = self.q.run()
        r.sort('z', order='desc')
        plateifu = r.getListOf('plateifu')
        index = plateifu.index(self.plateifu)
        newres = r.results[index]
        self.assertEqual(self.res, newres)
        return r
Пример #3
0
 def test_dap_query_abs_g_r_remote(self):
     # This uses MPL-4 (it will return 4 results if MPL-5)
     self._set_remote()
     p = 'abs_g_r>-1'
     q = Query(searchfilter=p, mode=self.mode)
     r = q.run()
     self.assertEqual(1389, r.totalcount)
Пример #4
0
 def test_quality_queries(self, sf, qual, flags, count):
     q = Query(search_filter=sf, quality=qual, release='MPL-5')
     sql = q.show()
     for flag in flags.split(','):
         assert flag.strip() in sql
     r = q.run()
     assert r.results is not None
     assert r.totalcount == count
Пример #5
0
 def _fail_query(self, errmsg, tracemsg, *args, **kwargs):
     with self.assertRaises(MarvinError) as cm:
         q = Query(**kwargs)
         r = q.run()
     self.assertIn(errmsg, str(cm.exception))
     self.assertIsNotNone(config._traceback)
     self.assertIsNotNone(bconfig.traceback)
     self.assertIn(tracemsg, config._traceback)
Пример #6
0
 def test_success(self, query, rps):
     query = Query(searchfilter=query.searchfilter,
                   returnparams=rps,
                   mode=query.mode)
     assert 'nsa.z' in query.params
     #assert set(rps).issubset(set(query.params))
     res = query.run()
     assert all([p in res.columns for p in rps]) is True
Пример #7
0
 def test_Query_only_drpver(self):
     p = 'cube.plate==8485 and spaxel.x > 5'
     q = Query(searchfilter=p)
     r = q.run()
     self.assertEqual(self.plate, r.getListOf('cube.plate')[0])
     self.assertEqual(self.mangaid, r.getListOf('cube.mangaid')[0])
     self.assertIn('drpalias', str(q.query.whereclause))
     self.assertNotIn('dapalias', str(q.query.whereclause))
Пример #8
0
 def test_sort(self, query, sortparam, order):
     data = query.expdata['queries']['nsa.z < 0.1']['sorted']
     query = Query(search_filter=query.search_filter, mode=query.mode, sort=sortparam, order=order)
     res = query.run()
     if order == 'asc':
         redshift = data['1'][-1]
     else:
         redshift = data['last'][-1]
     assert res.results['z'][0] == redshift
Пример #9
0
    def test_bad_queries(self, expmode, badquery, errmsg):
        if expmode is None:
            pytest.skip('cannot use queries in local mode without a db')

        with pytest.raises(MarvinError) as cm:
            query = Query(searchfilter=badquery, mode=expmode)
            res = query.run()
        assert cm.type == MarvinError
        assert errmsg in str(cm.value)
Пример #10
0
 def test_skipdefault(self, query, rps):
     query = Query(searchfilter=query.searchfilter,
                   returnparams=rps,
                   mode=query.mode)
     assert len(query._returnparams) == len(rps)
     assert len(query.params) == 6
     res = query.run()
     assert len(res.returnparams) == len(rps)
     assert len(res.columns) == 6
Пример #11
0
 def test_target_queries(self, sf, targ, flags, count):
     q = Query(search_filter=sf, targets=targ, release='MPL-4')
     sql = q.show()
     for flag in flags.split(','):
         ff = flag.strip()
         assert (ff in sql or ff.replace('%', '%%') in sql)
     r = q.run()
     assert r.results is not None
     assert r.totalcount == count
Пример #12
0
 def test_results_returntype_cube_limit(self):
     config.setMPL('MPL-5')
     p = 'haflux > 25'
     q = Query(searchfilter=p)
     r = q.run()
     r.convertToTool('cube', limit=5)
     self.assertIsNotNone(r.objects)
     self.assertEqual(18, r.count)
     self.assertEqual(5, len(r.objects))
     self.assertEqual(True, isinstance(r.objects[0], Cube))
Пример #13
0
def fxnr(mode):
    if mode == 'remote':
        config.forceDbOff()
    q = Query(search_filter='nsa.z < 0.1', release='MPL-4', mode=mode)
    r = q.run()
    yield r
    q = None
    r = None
    if mode == 'remote':
        config.forceDbOn()
Пример #14
0
 def test_Query_drpver_and_dapver(self):
     p = 'cube.plate==8485 and emline_gflux_ha_6564>25'
     q = Query(searchfilter=p)
     r = q.run()
     tmp = r.sort('emline_gflux_ha_6564')
     self.assertEqual(self.plate, r.getListOf('cube.plate')[0])
     self.assertEqual(self.mangaid, r.getListOf('cube.mangaid')[0])
     self.assertEqual(26.112, r.getListOf('emline_gflux_ha_6564')[0])
     self.assertGreaterEqual(r.count, 6)
     self.assertIn('drpalias', str(q.query.whereclause))
     self.assertIn('dapalias', str(q.query.whereclause))
Пример #15
0
    def test_get_success(self, query, objtype, tool):
        if query.mode == 'remote' and config.db is None:
            pytest.skip('skipping weird case where nodb, remote mode tried to load a local file')
        if config.release == 'MPL-4' and objtype == 'modelcube':
            pytest.skip('no modelcubes in mpl-4')

        query = Query(search_filter=query.search_filter, return_type=objtype, mode=query.mode, release=query.release)
        res = query.run()
        assert res.objects is not None
        assert len(res.results) == len(res.objects)
        assert isinstance(res.objects[0], tool) is True
Пример #16
0
def results(query, request):
    searchfilter = request.param if hasattr(
        request, 'param') else 'nsa.z < 0.1 and cube.plate==8485'
    q = Query(searchfilter=searchfilter,
              mode=query.mode,
              limit=10,
              release=query._release)
    r = q.run()
    r.expdata = query.expdata
    yield r
    r = None
Пример #17
0
    def test_bad_queries(self, expmode, badquery, errmsg):
        if expmode is None:
            pytest.skip('cannot use queries in local mode without a db')

        set_the_config(config.release)

        with pytest.raises((KeyError, MarvinError)) as cm:
            query = Query(search_filter=badquery, mode=expmode)
            res = query.run()
        assert cm.type == KeyError or cm.type == MarvinError
        assert errmsg in str(cm.value)
Пример #18
0
 def test_get_list_all(self, results):
     q = Query(search_filter=results.search_filter,
               mode=results.mode,
               limit=1,
               release=results.release,
               return_params=results.return_params)
     r = q.run(start=0, end=1)
     assert r.count == 1
     mangaids = r.getListOf('mangaid', return_all=True)
     assert len(mangaids) == r.totalcount
     assert len(mangaids) == results.expdata['queries'][
         results.search_filter]['count']
Пример #19
0
 def _set_modes(self, expmode=None):
     p = 'nsa.z < 0.1 and cube.plate == 8485'
     q = Query(searchfilter=p, mode=self.mode)
     r = q.run()
     # this part selects 8485-1901
     r.sort('z')
     r.results = r.results[-4:]
     r.convertToTool('cube', limit=1)
     self.assertEqual(expmode, q.mode)
     self.assertEqual(expmode, r.mode)
     self.assertEqual(q.mode, r.mode)
     self.assertEqual(expmode, r.objects[0].mode)
Пример #20
0
    def test_badparams(self, query, expmode, rps, errmsg):
        # set error type based on query mode
        if expmode == 'remote':
            error = MarvinError
        else:
            error = KeyError

        with pytest.raises(error) as cm:
            query = Query(searchfilter=query.searchfilter,
                          returnparams=[rps],
                          mode=query.mode)
            res = query.run()
        assert cm.type == error
        assert errmsg in str(cm.value)
Пример #21
0
def results(query, request):
    searchfilter = request.param if hasattr(request,
                                            'param') else 'nsa.z < 0.1'
    q = Query(search_filter=searchfilter,
              mode=query.mode,
              limit=10,
              release=query.release)
    if q.mode == 'remote':
        pytest.xfail(
            'cannot control for DAP spaxel queries on server side; failing all remotes until then'
        )
    r = q.run()
    r.expdata = query.expdata
    yield r
    r = None
Пример #22
0
    def _query_return_type(self, rt=None, mode='local'):

        if rt == 'cube':
            tool = Cube
        elif rt == 'maps':
            tool = Maps
        elif rt == 'spaxel':
            tool = Spaxel

        if mode == 'remote':
            self._set_remote()

        config.setMPL('MPL-5')
        p = 'haflux > 25'
        q = Query(searchfilter=p, returntype=rt, mode=mode)
        r = q.run()
        self.assertIsNotNone(r.objects)
        self.assertEqual(18, r.count)
        self.assertEqual(len(r.results), len(r.objects))
        self.assertEqual(True, isinstance(r.objects[0], tool))
Пример #23
0
    def _dap_query_1(self,
                     count,
                     table=None,
                     name='emline_gflux_ha_6564',
                     classname='SpaxelProp',
                     allspax=None):
        classname = 'Clean{0}'.format(classname) if not allspax else classname
        if table:
            key = '{0}.{1}'.format(table, name)
        else:
            key = '{0}'.format(name)

        p = '{0} > 25 and cube.plate == 8485'.format(key)
        q = Query(searchfilter=p,
                  returnparams=['spaxelprop.emline_gflux_hb_4862'],
                  allspaxels=allspax)
        r = q.run()
        self.assertEqual(
            classname,
            q.marvinform._param_form_lookup[key].Meta.model.__name__)
        self.assertEqual(count, r.totalcount)
Пример #24
0
 def test_dap_query_2_remote(self):
     self._set_remote()
     p = 'npergood(spaxelprop.emline_gflux_ha_6564 > 5) >= 20'
     q = Query(searchfilter=p, mode=self.mode)
     r = q.run()
     self.assertEqual(8, r.totalcount)
Пример #25
0
 def test_Query_drp_but_nomaps(self):
     p = 'cube.plate < 8400'
     q = Query(searchfilter=p)
     r = q.run()
     self.assertIn('drpalias', str(q.query.whereclause))
     self.assertNotIn('dapalias', str(q.query.whereclause))
Пример #26
0
 def test_Query_remote_no_traceback(self):
     self._set_remote(mode='local')
     p = 'nsa.z < 0.1'
     q = Query(searchfilter=p)
     r = q.run()
     self.assertIsNone(config._traceback)
Пример #27
0
 def test_function_queries(self, sf):
     q = Query(search_filter=sf)
     r = q.run()
     assert r.results is not None
Пример #28
0
 def test_dap_query_2(self):
     p = 'npergood(spaxelprop.emline_gflux_ha_6564 > 5) >= 20'
     q = Query(searchfilter=p)
     r = q.run()
     self.assertEqual(8, r.totalcount)