# Policy: Queue-based Authentication Simulation
#
# This policy simulates a continuous stream of authentication requests
# by pulling URLs from a Redis queue, processing them with yt-ops-server,
# and pushing results to appropriate result queues.
#
name: queue_auth_simulation

settings:
  mode: fetch_only
  orchestration_mode: queue_auth
  profile_mode: from_pool_with_lock
  # Directory to save info.json files (optional).
  # For distributed operation across multiple machines, this MUST be a shared location
  # like an S3 bucket path. The underlying code must be adapted to handle S3 paths.
  save_info_json_dir: "run/docker_mount/fetched_info_jsons/" #"s3://your-shared-bucket/stress_test/info_jsons/"


  dummy_simulation_settings:                                                                                                                                                                                             
    # Simulate auth processing time between 5 and 10 seconds for each URL.                                                                                                                                               
    auth_min_seconds: 5                                                                                                                                                                                                  
    auth_max_seconds: 10                                                                                                                                                                                               
    # You can also control simulated failure rates here.                                                                                                                                                                 
    auth_failure_rate: 0.0 # 0% failure rate                                                                                                                                                                             
    auth_skipped_failure_rate: 0.0 # 0% skipped rate        

execution_control:
  workers: 1
  # How long a worker should pause if it cannot find an available profile or task.
  worker_polling_interval_seconds: 1
  # Run until conditions
  run_until:
    # Run for this many minutes (0 = unlimited)
    minutes: 0
    # Process this many requests (0 = unlimited)
    requests: 0




info_json_generation_policy:
  profile_prefix: "user1"
  client: "ytdlp"
  # Extra arguments to pass to the get-info command
  extra_args: "--verbose"

queue_policy:
  # Set to false to use legacy, unprefixed queue names (e.g., 'queue2_auth_inbox').
  # Set to true (or omit) to use environment-prefixed names (e.g., 'sim_auth_queue2_auth_inbox').
  use_env_prefix: false
  
  # If specified, create download tasks for these formats
  # Can be "all", a specific format ID, or a list of format IDs
  formats_to_download: "140-dashy/140-dashy-0/140,299-dashy/298-dashy/137-dashy/136-dashy/135-dashy/134-dashy/133-dashy"
  
  # How many tasks a worker should pull from the queue at once.
  # The worker will lock one profile to process the entire batch.
  batch_size: 25

simulation_parameters:
  auth_env: "sim_auth"
  download_env: "sim_download"
