def test_alias_queue(self): self.d.create_new_db_and_connect(self.testing_db_name) providers = ProviderFactory.get_providers(self.app.config["PROVIDERS"]) response = self.client.post('/item/doi/' + quote_plus(TEST_DRYAD_DOI)) tiid = json.loads(response.data) # now get it back out response = self.client.get('/item/' + tiid) print tiid assert_equals(response.status_code, 200) resp_dict = json.loads(response.data) assert_equals( set(resp_dict.keys()), set([u'tiid', u'created', u'last_requested', u'metrics', u'last_modified', u'biblio', u'id', u'aliases']) ) assert_equals(unicode(TEST_DRYAD_DOI), resp_dict["aliases"]["doi"][0]) # test the view works res = self.d.view("aliases") assert len(res["rows"]) == 1, res assert_equals(TEST_DRYAD_DOI, res["rows"][0]["value"]["aliases"]["doi"][0]) # see if the item is on the queue my_alias_queue = AliasQueue(self.d) assert isinstance(my_alias_queue.queue, list) assert_equals(len(my_alias_queue.queue), 1) # get our item from the queue my_item = my_alias_queue.first() assert_equals(my_item.aliases.doi[0], TEST_DRYAD_DOI) # do the update using the backend alias_thread = ProvidersAliasThread(providers, self.d) alias_thread.run(run_only_once=True) # get the item back out again and bask in the awesome response = self.client.get('/item/' + tiid) resp_dict = json.loads(response.data) print tiid print response.data assert_equals( resp_dict["aliases"]["title"][0], "data from: can clone size serve as a proxy for clone age? an exploration using microsatellite divergence in populus tremuloides" ) print resp_dict assert_equals(resp_dict["biblio"]["data"]["year"], "2010")
def test_metrics_queue(self): """ Test that the metrics queue works This test isn't correct just now. We'd need to simulate the item getting it's aliases completed. """ raise SkipTest self.d.create_new_db_and_connect(self.testing_db_name) number_of_item_api_calls = 0 # create new dryad item dryad_resp = self.client.post('/item/doi/' + quote_plus(DRYAD_TEST_DOI)) number_of_item_api_calls += 1 dryad_tiid = dryad_resp.data # test the metrics view works res = self.d.view("metrics") assert_equals( len(res["rows"]), number_of_item_api_calls*len(self.providers) ) # three IDs above, three providers assert_equals( res["rows"][0]["value"]["metrics"]["dryad:package_views"]["values"], {}) # see if the item is on the queue all_metrics_queue = MetricsQueue(self.d) assert isinstance(all_metrics_queue.queue, list) assert_equals( len(all_metrics_queue.queue), number_of_item_api_calls*len(self.providers) ) # get our item from the queue my_item = all_metrics_queue.first() assert_equals(my_item.metrics["dryad:package_views"]['values'], {}) assert(my_item.created - time.time() < 30) # create new plos item plos_resp = self.client.post('/item/doi/' + quote_plus(PLOS_TEST_DOI)) number_of_item_api_calls += 1 plos_tiid = json.loads(plos_resp.data) # create new github item github_resp = self.client.post('/item/github/' + quote_plus(GITHUB_TEST_ID)) number_of_item_api_calls += 1 github_tiid = json.loads(github_resp.data) all_metrics_queue = MetricsQueue(self.d) #assert_equals(len(all_metrics_queue.queue), # number_of_item_api_calls*len(self.providers)) dryad_metrics_queue = MetricsQueue(self.d, "dryad") assert_equals(len(dryad_metrics_queue.queue), number_of_item_api_calls) github_metrics_queue = MetricsQueue(self.d, "github") assert_equals(len(github_metrics_queue.queue), number_of_item_api_calls) alias_thread = ProvidersAliasThread(self.providers, self.d) alias_thread.run(run_only_once=True) # now run just the dryad metrics thread. metrics_thread = ProviderMetricsThread(self.providers[0], self.d) metrics_thread.run(run_only_once=True) metrics_thread.run(run_only_once=True) metrics_thread.run(run_only_once=True) # test the dryad doi dryad_resp = self.client.get('/item/' + dryad_tiid.replace('"', '')) resp_dict = json.loads(dryad_resp.data) print json.dumps(resp_dict, sort_keys=True, indent=4) assert_equals(resp_dict['metrics']['dryad:total_downloads']['values'].values()[0], 169)