s.connect(config.AXXESS_IP, config.AXXESS_PORT)

# Introduce ourselves
s.send("02000000".decode("hex"))
s.send("8400".decode("hex"))

# Receive data forever
while (1):
    line = s.receive(RECORD_LENGTH)

    cleaned_line = clean_line(line)

    if (raw_file is not None):
        f = open(raw_file, "a")

        if (f is not None):
            f.write(cleaned_line)
            f.close()

    cdr = line_to_cdr(cleaned_line, None) 

    if (cdr is not False):
        status = insert_cdr_record(cdr, cursor)

        if (status is 1):
            conn.commit()

s.close()
conn.close()

    def test_line_to_cdr(self):
        header_1 = "Station Message Detailed Recording                          00:00:04 07-03-2012"
        header_2 = "TYP EXT#  TRUNK DIALED DIGITS                START ELAPSED   COST  ACCOUNT CODE"
        self.assertFalse(line_to_cdr(header_1, None))
        self.assertFalse(line_to_cdr(header_2, None))

        ring_1 = "    ***** 94129 RG 612-804-4082         8907 00:29      S=5                    *"
        ring_2 = "    181   94129 RING......0063               06:46      S=9                     "
        ring_3 = "    110   94129 RG 525530894016         0061 08:34      S=4                     "
        self.assertTrue(line_to_cdr(ring_1, None))
        self.assertTrue(line_to_cdr(ring_2, None))
        self.assertTrue(line_to_cdr(ring_3, None))

        outgoing_1 = "TLC 104   94151 952-474-1742                 08:52    S=226 $00.00              "
        outgoing_2 = "O/I 104   94151 011-49618296260              09:00    S=193 $00.00             *"
        outgoing_3 = "TLD 116   94151 1-631-220-3707               09:33     S=65 $00.00              "
        outgoing_4 = "LOC 104   94151 1-877-244-1771               11:03    S=649 $00.00              "
        self.assertTrue(line_to_cdr(outgoing_1, None))
        self.assertTrue(line_to_cdr(outgoing_2, None))
        self.assertTrue(line_to_cdr(outgoing_3, None))
        self.assertTrue(line_to_cdr(outgoing_4, None))

        incoming_1 = "IN  110   94129 525530894016            0061 08:48      S=1 $00.00             *"
        incoming_2 = "IN  181   94129 0063                         09:19     S=80 $00.00              "
        self.assertTrue(line_to_cdr(incoming_1, None))
        self.assertTrue(line_to_cdr(incoming_2, None))
fileName = basename(fileWithPath)
m        = re.match(r'phone_log_(\d+?)-(\d+?)-(\d+?)\.log', fileName)

if (m is None):
    logging.critical("Log file name is malformed.")
    logging.critical("Name must conform to phone_log_yyyy-mm-dd.log")
    sys.exit(1)

# Assemble datetime from filename
logYear  = int(m.group(1))
logMonth = int(m.group(2))
logDay   = int(m.group(3))
log_date = datetime.date(logYear, logMonth, logDay)

conn = sqlite3.connect(config.DATABASE_NAME)
cursor = conn.cursor()

f = open(fileWithPath)

for line in f:
    line = clean_line(line)
    cdr = line_to_cdr(line, log_date)
    insert_cdr_record(cdr, cursor)

f.close()

conn.commit()
conn.close()