def testLogs2JSON_Mixed(self):
        print '\ntestLogs2JSON_Missing'
        testData = gen_mixed_data()
        f = tempfile.NamedTemporaryFile(delete=True)
        f.write(testData)
        f.flush()

        # Filter out to WARNING and above.
        log_filters = logFilter.LogFilters.copy()
        log_filters['level'] = 'WARNING'
        try:
            lf = logFilter.LogFilterJSON(log_filters)
        except Exception as err:
            sys.stderr.write('Invalid configuration file:%s\n' % err)
            return 1
        json_data = lf.log_file_2_JSON(f.name)
        f.close()

        # Pretty print json
        json_internal = json.loads(json_data)
        """
        print json.dumps(json_internal, sort_keys=True, indent=4,
                separators=(',', ':'))
        """

        self.failUnless(json_internal[0]['level'] == 'ERROR')
        self.failUnless(json_internal[0]['device'] == 'water01')
        self.failUnless(json_internal[0]['state'] == 'LOW')
    def testLogs2JSON_HappyPath(self):
        print '\ntestLogs2JSON_HappyPath'
        testData = gen_happy_path()

        #print 'testData:\n' + testData

        f = tempfile.NamedTemporaryFile(delete=True)
        f.write(testData)
        f.flush()

        try:
            lf = logFilter.LogFilterJSON({})
        except Exception as err:
            sys.stderr.write('Invalid configuration file:%s\n' % err)
            return 1

        json_data = lf.log_file_2_JSON(f.name)
        f.close()

        # Pretty print json
        py_internal = json.loads(json_data)

        #print json.dumps(py_internal, sort_keys=True, indent=4,
        #        separators=(',', ':'))

        self.failUnless(py_internal[0]['level'] == 'DEBUG')
        self.failUnless(py_internal[0]['temp'] == '34.5')

        self.failUnless(py_internal[1]['level'] == 'CMD')
        self.failUnless(py_internal[1]['temp'] == '34.5')
        self.failUnless(py_internal[1]['item'] == 'Good Stuff')
 def testLogs2JSON_Bogus_filename(self):
     print '\ntestLogs2JSON_Bogus_filename'
     log_filters = logFilter.LogFilters.copy()
     try:
         lf = logFilter.LogFilterJSON(log_filters)
     except Exception as err:
         sys.stderr.write('Invalid configuration file:%s\n' % err)
         return 1
     result = lf.log_file_2_JSON('/QQQ/ZZZ.bogus')
     self.failUnless(result is None)
    def testErrorLevelJSON_1(self):
        print '\ntestErrorLevelJSON - filter to >= ERROR'
        testData = gen_happy_path()
        testData += gen_missing_data()

        f = tempfile.NamedTemporaryFile(delete=True)
        f.write(testData)
        f.flush()

        log_filters = logFilter.LogFilters.copy()
        log_filters['level'] = 'ERROR'
        try:
            lf = logFilter.LogFilterJSON(log_filters)
        except Exception as err:
            sys.stderr.write('Invalid configuration file:%s\n' % err)
            return
        json_data = lf.log_file_2_JSON(f.name)
        f.close()

        json_internal = json.loads(json_data)
        """
        # Pretty print json
        print json.dumps(json_internal, sort_keys=True, indent=4,
                separators=(',', ':'))
        """

        num_debug = countKeyValueJSON(json_internal, 'level', 'DEBUG')
        self.failUnless(num_debug == 0)

        num_info = countKeyValueJSON(json_internal, 'level', 'INFO')
        self.failUnless(num_info == 0)

        num_warnings = countKeyValueJSON(json_internal, 'level', 'WARNING')
        self.failUnless(num_warnings == 0)

        num_error = countKeyValueJSON(json_internal, 'level', 'ERROR')
        self.failUnless(num_error > 0)

        num_critical = countKeyValueJSON(json_internal, 'level', 'CRITICAL')
        self.failUnless(num_critical > 0)

        self.failUnless(json_internal[0]['level'] == 'ERROR')
        self.failUnless(json_internal[0]['temp'] == '999')