# By: Riasat Ullah
# This file contains test data for heartbeats and other ping monitors.

from constants import static_vars, var_names
from system_tests.test_data import test_data_services, test_data_teams
from system_tests import test_tools
import datetime


heartbeats_list = [
    {
        var_names.check_id: 1,
        var_names.check_ref_id: test_tools.get_dummy_reference_id(),
        var_names.check_type: static_vars.check_type_heartbeat,
        var_names.check_name: 'Locates Checker',
        var_names.description: 'Ensures that the FTP site for locates is running uninterrupted. Several jobs rely ' +
                               'on locates. If the FTP site is not up at all times, these processes will fail.',
        var_names.service: test_data_services.services_basic_list[1],
        var_names.ping_type: static_vars.http,
        var_names.teams: [test_data_teams.teams_basic_list[0]],
        var_names.interval: 60,
        var_names.grace_period: 30,
        var_names.last_run: datetime.datetime.now() - datetime.timedelta(minutes=121),
        var_names.next_run: datetime.datetime.now() + datetime.timedelta(minutes=5),
        var_names.is_healthy: True,
        var_names.is_enabled: True,
        var_names.last_30_days: [
            {var_names.period: datetime.datetime.now().date() + datetime.timedelta(days=i),
             var_names.count: 2 if i == -13 else 0}
            for i in range(-30, 0)
        ],
        var_names.tags: ['ftp sites'],
        var_names.url: 'https://integrations.taskcallapp.com/checks/de6380f24nggfaflpff',
        var_names.ip_address: ['123.48.97.123', '155.14.12.10'],
        var_names.email: 'hde6380f24nggfaflpff@checks.taskcallapp.com',
        var_names.email_from: None,
        var_names.task_title: 'Locates Were not Received',
        var_names.text_msg: 'Please contact the broker immediately and follow up.',
        var_names.urgency_level: static_vars.high_urgency
    },
    {
        var_names.check_id: 2,
        var_names.check_ref_id: test_tools.get_dummy_reference_id(),
        var_names.check_type: static_vars.check_type_heartbeat,
        var_names.check_name: 'PCAP Receiver',
        var_names.description: 'Monitors PCAP receiver uptime',
        var_names.service: test_data_services.services_basic_list[0],
        var_names.ping_type: static_vars.email,
        var_names.teams: None,
        var_names.interval: 259200,
        var_names.grace_period: 120,
        var_names.last_run: datetime.datetime.now() - datetime.timedelta(minutes=200),
        var_names.next_run: datetime.datetime.now() + datetime.timedelta(minutes=5),
        var_names.is_healthy: True,
        var_names.is_enabled: True,
        var_names.last_30_days: [
            {var_names.period: datetime.datetime.now().date() + datetime.timedelta(days=i),
             var_names.count: 2 if i % 13 == 0 else 0}
            for i in range(-30, 0)
        ],
        var_names.tags: ['ftp sites', 'amer'],
        var_names.url: 'https://integrations.taskcallapp.com/checks/nofn2o320nf-2fnn2f4f',
        var_names.ip_address: None,
        var_names.email: 'hnofn2o320nf-2fnn2f4f@checks.taskcallapp.com',
        var_names.email_from: ['systems@apollo.com'],
        var_names.task_title: 'PCAP Received DOWN',
        var_names.text_msg: 'Restart the PCAP server.',
        var_names.urgency_level: static_vars.medium_urgency
    }
]


heartbeats_metrics = {
    heartbeats_list[0][var_names.check_ref_id]: {
        var_names.check_name: heartbeats_list[0][var_names.check_name],
        var_names.last_run: datetime.datetime.now() - datetime.timedelta(minutes=45),
        var_names.next_run: datetime.datetime.now() + datetime.timedelta(minutes=15),
        var_names.interval: heartbeats_list[0][var_names.interval],
        var_names.grace_period: heartbeats_list[0][var_names.grace_period],
        var_names.ping_type: heartbeats_list[0][var_names.ping_type],
        var_names.url: heartbeats_list[0][var_names.url],
        var_names.email: heartbeats_list[0][var_names.email],
        var_names.is_healthy: True,
        var_names.availability: 99,
        var_names.total: 100,
        var_names.passed: 99,
        var_names.failed: 1,
        var_names.events: [
            {
                var_names.scheduled_timestamp: datetime.datetime.now() - datetime.timedelta(hours=30-i),
                var_names.run_timestamp: datetime.datetime.now() - datetime.timedelta(hours=30-i),
                var_names.passed: 0 if i == 7 else 1,
                var_names.organization_instance_id: 14 if i == 7 else None
            }
            for i in range(0, 30)
        ],
        var_names.incidents: [
            {
                var_names.organization_instance_id: 11,
                var_names.instance_timestamp: datetime.datetime.now() - datetime.timedelta(hours=7),
                var_names.task_title: heartbeats_list[0][var_names.task_title],
                var_names.text_msg: heartbeats_list[0][var_names.text_msg],
                var_names.services: heartbeats_list[0][var_names.service],
                var_names.status: static_vars.acknowledged_state,
                var_names.resolved_on: None
            },
            {
                var_names.organization_instance_id: 12,
                var_names.instance_timestamp: datetime.datetime.now() - datetime.timedelta(days=20),
                var_names.task_title: heartbeats_list[0][var_names.task_title],
                var_names.text_msg: heartbeats_list[0][var_names.text_msg],
                var_names.services: heartbeats_list[0][var_names.service],
                var_names.status: static_vars.resolved_state,
                var_names.resolved_on: datetime.datetime.now() - datetime.timedelta(days=20, minutes=17)
            }
        ],
        var_names.checks: [
            {
                var_names.period: [datetime.datetime.now() - datetime.timedelta(hours=30-i),
                                   datetime.datetime.now() - datetime.timedelta(hours=29-i)],
                var_names.labels: (datetime.datetime.now() - datetime.timedelta(hours=29-i)).strftime('%H:%M'),
                var_names.total: 2 if i % 13 == 0 else 1,
                var_names.passed: 2 if i == 13 == 0 else 1,
                var_names.failed: 1 if i == 26 else 0
            }
            for i in range(0, 30)
        ]
    },
    heartbeats_list[1][var_names.check_ref_id]: {
        var_names.check_name: heartbeats_list[1][var_names.check_name],
        var_names.last_run: heartbeats_list[1][var_names.last_run],
        var_names.next_run: heartbeats_list[1][var_names.next_run],
        var_names.interval: heartbeats_list[1][var_names.interval],
        var_names.grace_period: heartbeats_list[1][var_names.grace_period],
        var_names.ping_type: heartbeats_list[1][var_names.ping_type],
        var_names.url: heartbeats_list[1][var_names.url],
        var_names.email: heartbeats_list[1][var_names.email],
        var_names.is_healthy: True,
        var_names.availability: 100,
        var_names.total: 0,
        var_names.passed: 0,
        var_names.failed: 0,
        var_names.events: [],
        var_names.incidents: [],
        var_names.checks: []
    }
}
