def main(self): with Lifecycle(self.web3) as lifecycle: lifecycle.initial_delay(10) lifecycle.on_startup(self.startup) lifecycle.on_block(self.synchronize_orders) lifecycle.on_shutdown(self.shutdown)
def test_should_take_over_order_from_adjacent_band_when_price_changes(self, deployment: Deployment, tmpdir): # given config_file = BandConfig.two_adjacent_bands_config(tmpdir) # and keeper = OasisMarketMakerKeeper(args=args(f"--eth-from {deployment.our_address} " f"--tub-address {deployment.tub.address} " f"--oasis-address {deployment.otc.address} " f"--buy-token-address {deployment.sai.address} " f"--sell-token-address {deployment.gem.address} " f"--price-feed tub " f"--config {config_file}"), web3=deployment.web3) keeper.lifecycle = Lifecycle(web3=keeper.web3) # and self.mint_tokens(deployment) self.set_price(deployment, Wad.from_number(100)) # when keeper.approve() self.synchronize_orders_twice(keeper) # then assert len(deployment.otc.get_orders()) == 2 # and assert self.orders_sorted(deployment.otc.get_orders())[0].maker == deployment.our_address assert self.orders_sorted(deployment.otc.get_orders())[0].pay_amount == Wad.from_number(7.5) assert self.orders_sorted(deployment.otc.get_orders())[0].pay_token == deployment.gem.address assert self.orders_sorted(deployment.otc.get_orders())[0].buy_amount == Wad.from_number(780) assert self.orders_sorted(deployment.otc.get_orders())[0].buy_token == deployment.sai.address # and assert self.orders_sorted(deployment.otc.get_orders())[1].maker == deployment.our_address assert self.orders_sorted(deployment.otc.get_orders())[1].pay_amount == Wad.from_number(9.5) assert self.orders_sorted(deployment.otc.get_orders())[1].pay_token == deployment.gem.address assert self.orders_sorted(deployment.otc.get_orders())[1].buy_amount == Wad.from_number(1026) assert self.orders_sorted(deployment.otc.get_orders())[1].buy_token == deployment.sai.address # when self.set_price(deployment, Wad.from_number(96)) # and self.synchronize_orders_twice(keeper) # then assert len(deployment.otc.get_orders()) == 2 # and # ...new order in the <0.02,0.06> band gets created assert self.orders_sorted(deployment.otc.get_orders())[0].maker == deployment.our_address assert self.orders_sorted(deployment.otc.get_orders())[0].pay_amount == Wad.from_number(7.5) assert self.orders_sorted(deployment.otc.get_orders())[0].pay_token == deployment.gem.address assert self.orders_sorted(deployment.otc.get_orders())[0].buy_amount == Wad.from_number(748.8) assert self.orders_sorted(deployment.otc.get_orders())[0].buy_token == deployment.sai.address # and # ...the order from <0.02,0.06> ends up in the <0.06,0.10> band assert self.orders_sorted(deployment.otc.get_orders())[1].maker == deployment.our_address assert self.orders_sorted(deployment.otc.get_orders())[1].pay_amount == Wad.from_number(7.5) assert self.orders_sorted(deployment.otc.get_orders())[1].pay_token == deployment.gem.address assert self.orders_sorted(deployment.otc.get_orders())[1].buy_amount == Wad.from_number(780) assert self.orders_sorted(deployment.otc.get_orders())[1].buy_token == deployment.sai.address