# -*- encoding: UTF8 -*-
# Test harness for P4Triggers.py and a sub-class thereof
"""
Test script for P4Triggers framework
"""
from __future__ import print_function
import sys
import unittest
import os
import re
import P4
from p4testutils import TestCase, P4Server, localDirectory, create_file, append_to_file
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, parent_dir)
import P4Triggers
LOGGER_NAME = "TestP4Triggers"
LOG_FILE = "log-TestP4Triggers.log"
class SampleTrigger(P4Triggers.P4Trigger):
"""See module doc string for details"""
def __init__(self, *args, **kwargs):
P4Triggers.P4Trigger.__init__(self, **kwargs)
self.parse_args(__doc__, args)
def add_parse_args(self, parser):
"""Specific args for this trigger - also calls super class to add common trigger args"""
parser.add_argument('-c', '--config-file', default=None,
help="Configuration file for trigger. Default: CheckFixes.yaml")
parser.add_argument('change', help="Change to validate - %%change%% argument from triggers entry.")
super(SampleTrigger, self).add_parse_args(parser)
class TestP4Triggers(TestCase):
def __init__(self, methodName='runTest'):
super(TestP4Triggers, self).__init__(LOGGER_NAME, LOG_FILE, methodName=methodName)
def setUp(self):
pass
def tearDown(self):
pass
def testP4Triggers(self):
"""check that fixes are appropriate controlled"""
trig_args = ["-p", "testport", "-u", "testuser", "99"]
trig = SampleTrigger(*trig_args)
self.assertEqual('p4triggers.log', trig.options.log)
self.assertEqual('99', trig.options.change)
self.assertEqual('testport', trig.options.port)
self.assertEqual('testuser', trig.options.user)
trig_args = ["-p", "testport", "-u", "testuser", "-L", "mylog.log", "99"]
trig = SampleTrigger(*trig_args)
self.assertEqual('mylog.log', trig.options.log)
self.assertEqual('99', trig.options.change)
os.environ["LOGS"] = "/tmp"
trig_args = ["-p", "testport", "-u", "testuser", "99"]
trig = SampleTrigger(*trig_args)
self.assertEqual('p4triggers.log', trig.options.log)
self.assertEqual('99', trig.options.change)
trig_args = ["-p", "testport", "-u", "testuser", "-L", "mylog.log", "99"]
trig = SampleTrigger(*trig_args)
self.assertEqual('mylog.log', trig.options.log)
self.assertEqual('99', trig.options.change)
if __name__ == '__main__':
unittest.main()