import os
from datetime import datetime

import allure
import pytest
from frostfs_testlib.storage.cluster import ClusterNode
from frostfs_testlib.storage.controllers import ShardsWatcher
from frostfs_testlib.storage.dataclasses.object_size import ObjectSize
from frostfs_testlib.utils.file_utils import generate_file


@pytest.fixture()
@allure.title("Provide Shards watcher")
def shards_watcher(node_under_test: ClusterNode) -> ShardsWatcher:
    watcher = ShardsWatcher(node_under_test)
    return watcher


@pytest.fixture()
@allure.title("Test start time")
def test_start_time() -> datetime:
    start_time = datetime.utcnow()
    return start_time


@pytest.fixture()
@allure.title("Generate simple size file")
def simple_file(simple_object_size: ObjectSize) -> str:
    path_file = generate_file(size=simple_object_size.value)
    yield path_file
    os.remove(path_file)