(self)
| 19 | |
| 20 | @coroutine_test |
| 21 | async def test_stats_calculations(self): |
| 22 | logstats = LogStats.from_crawler(self.crawler) |
| 23 | |
| 24 | with pytest.raises(AttributeError): |
| 25 | logstats.pagesprev |
| 26 | with pytest.raises(AttributeError): |
| 27 | logstats.itemsprev |
| 28 | |
| 29 | logstats.spider_opened(self.spider) |
| 30 | assert logstats.pagesprev == 4802 |
| 31 | assert logstats.itemsprev == 3201 |
| 32 | |
| 33 | logstats.calculate_stats() |
| 34 | assert logstats.items == 3201 |
| 35 | assert logstats.pages == 4802 |
| 36 | assert logstats.irate == 0.0 |
| 37 | assert logstats.prate == 0.0 |
| 38 | assert logstats.pagesprev == 4802 |
| 39 | assert logstats.itemsprev == 3201 |
| 40 | |
| 41 | # Simulate what happens after a minute |
| 42 | self.stats.set_value("response_received_count", 5187) |
| 43 | self.stats.set_value("item_scraped_count", 3492) |
| 44 | logstats.calculate_stats() |
| 45 | assert logstats.items == 3492 |
| 46 | assert logstats.pages == 5187 |
| 47 | assert logstats.irate == 291.0 |
| 48 | assert logstats.prate == 385.0 |
| 49 | assert logstats.pagesprev == 5187 |
| 50 | assert logstats.itemsprev == 3492 |
| 51 | |
| 52 | # Simulate when spider closes after running for 30 mins |
| 53 | self.stats.set_value("start_time", datetime.fromtimestamp(1655100172)) |
| 54 | self.stats.set_value("finish_time", datetime.fromtimestamp(1655101972)) |
| 55 | logstats.spider_closed(self.spider, "test reason") |
| 56 | assert self.stats.get_value("responses_per_minute") == 172.9 |
| 57 | assert self.stats.get_value("items_per_minute") == 116.4 |
| 58 | |
| 59 | def test_stats_calculations_no_time(self): |
| 60 | """The stat values should be None since the start and finish time are |
nothing calls this directly
no test coverage detected