def METHOD_NAME(self):
    priv_key = default_config["GENESIS_PRI_KEY"]
    sender = eth_utils.encode_hex(priv_to_addr(priv_key))
    # deploy contract
    bytecode_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), CONTRACT_PATH)
    assert(os.path.isfile(bytecode_file))
    bytecode = open(bytecode_file).read()
    _, contractAddr = self.deploy_contract(sender, priv_key, bytecode)
    self.log.info(f"contract deployed at address {contractAddr}")
    # emit events throughout a few eras
    num_events = 0
    while self.rpc[ARCHIVE_NODE].epoch_number() < NUM_ERAS * ERA_EPOCH_COUNT:
        self.call_contract(sender, priv_key, contractAddr, encode_hex_0x(keccak(b"foo()")))
        num_events += 1
    self.log.info(f"num_events = {num_events}")
    self.log.info(f"epoch_number = {self.rpc[ARCHIVE_NODE].epoch_number()}")
    # sync blocks and wait for gc
    sync_blocks(self.nodes)
    time.sleep(1)
    latest_checkpoint = self.rpc[FULL_NODE].epoch_number("latest_checkpoint")
    assert_greater_than(latest_checkpoint, 0)
    # filtering the whole epoch range should fail on full nodes
    filter = Filter(from_epoch="earliest", to_epoch="latest_state", topics=[FOO_TOPIC])
    logs_archive = self.rpc[ARCHIVE_NODE].get_logs(filter)
    assert_equal(len(logs_archive), num_events)
    assert_raises_rpc_error(None, None, self.rpc[FULL_NODE].get_logs, filter)
    # filtering since the latest checkpoint should yield the same result
    filter = Filter(from_epoch="latest_checkpoint", to_epoch="latest_state", topics=[FOO_TOPIC])
    logs_archive = self.rpc[ARCHIVE_NODE].get_logs(filter)
    assert_greater_than(len(logs_archive), 0)
    logs_full = self.rpc[FULL_NODE].get_logs(filter)
    assert_equal(logs_archive, logs_full)
    self.log.info("Pass")