# 声明：本代码仅供学习和研究目的使用。使用者应遵守以下原则：  
# 1. 不得用于任何商业用途。  
# 2. 使用时应遵守目标平台的使用条款和robots.txt规则。  
# 3. 不得进行大规模爬取或对平台造成运营干扰。  
# 4. 应合理控制请求频率，避免给目标平台带来不必要的负担。   
# 5. 不得用于任何非法或不当的用途。
#   
# 详细许可条款请参阅项目根目录下的LICENSE文件。  
# 使用本代码即表示您同意遵守上述原则和LICENSE中的所有条款。  


# -*- coding: utf-8 -*-
# @Author  : relakkes@gmail.com
# @Time    : 2023/12/2 14:42
# @Desc    :
import asyncio
import time
from unittest import IsolatedAsyncioTestCase

from pkg.proxy.proxy_ip_pool import create_ip_pool
from pkg.proxy.types import IpInfoModel
from pkg.tools.utils import init_logging_config


class TestIpPool(IsolatedAsyncioTestCase):
    def setUp(self):
        init_logging_config()

    async def test_ip_pool(self):
        # init logging config
        pool = await create_ip_pool(ip_pool_count=1, enable_validate_ip=True)
        print("\n")
        for i in range(3):
            ip_proxy_info: IpInfoModel = await pool.get_proxy()
            print(ip_proxy_info)
            print(f"当前ip {ip_proxy_info} 在多少时间后过期: {ip_proxy_info.expired_time_ts - int(time.time())} 秒")
            self.assertIsNotNone(ip_proxy_info.ip, msg="验证 ip 是否获取成功")
            await asyncio.sleep(1)
