Commit 2c229ccfa1d31d901a9e895d471449b08dfb2df8

Authored by Eduardo Santos
2 parents 297a524f 67a1fb82
Exists in master

Gravação e testes das redes

cocar/csv_utils.py 0 → 100644
... ... @@ -0,0 +1,31 @@
  1 +#!/bin/env python
  2 +# -*- coding: utf-8 -*-
  3 +__author__ = 'eduardo'
  4 +import csv
  5 +from .model.network import Network
  6 +
  7 +
  8 +class NetworkCSV(object):
  9 + """
  10 + Arquivo CSV das redes
  11 + """
  12 + def __init__(self,
  13 + csv_file):
  14 + """
  15 + Parse do arquivo CSV
  16 + :param csv_file: Arquivo CSV para abrir
  17 + """
  18 + self.csv_file = csv_file
  19 +
  20 + def parse_csv(self):
  21 + with open(self.csv_file, 'rb') as csvfile:
  22 + saida = list()
  23 + network_csv = csv.reader(csvfile, delimiter=';')
  24 + for row in network_csv:
  25 + network = Network(
  26 + network_ip=row[0],
  27 + netmask=row[1]
  28 + )
  29 + saida.append(network)
  30 +
  31 + return saida
0 32 \ No newline at end of file
... ...
cocar/model/network.py
1 1 #!/bin/env python
2 2 # -*- coding: utf-8 -*-
3 3 __author__ = 'eduardo'
4   -import os.path
5   -from .. import Cocar
6 4 from netaddr import IPNetwork, IPSet
7 5 from ..model import Base
8 6 from sqlalchemy.schema import Column
... ...
cocar/tests/fixtures/networks.csv 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +192.168.1.0;255.255.255.0
  2 +192.168.2.0;255.255.255.0
  3 +192.168.3.0;255.255.255.0
0 4 \ No newline at end of file
... ...
cocar/tests/test_persistence.py
... ... @@ -5,6 +5,7 @@ __author__ = 'eduardo'
5 5 import unittest
6 6 import cocar.tests
7 7 from ..xml_utils import NmapXML
  8 +from..csv_utils import NetworkCSV
8 9 from ..model.computer import Computer
9 10 from ..model.printer import Printer
10 11 from ..model.network import Network
... ... @@ -22,6 +23,7 @@ class TestPersistence(unittest.TestCase):
22 23 self.network_file = cocar.tests.test_dir + "/fixtures/192.168.0.0-24.xml"
23 24 self.localhost_file = cocar.tests.test_dir + "/fixtures/127.0.0.1.xml"
24 25 self.printer_file = cocar.tests.test_dir + "/fixtures/printer.xml"
  26 + self.network_csv = cocar.tests.test_dir + "/fixtures/networks.csv"
25 27 self.session = cocar.tests.cocar.Session
26 28  
27 29 def test_connect(self):
... ... @@ -88,6 +90,23 @@ class TestPersistence(unittest.TestCase):
88 90 results = self.session.query(Network).first()
89 91 self.assertIsNotNone(results)
90 92  
  93 + def test_load_networks(self):
  94 + """
  95 + Carrega no banco redes oriundas de arquivo CSV
  96 + """
  97 + network_csv = NetworkCSV(csv_file=self.network_csv)
  98 + network = network_csv.parse_csv()
  99 + self.assertIsInstance(network[0], Network)
  100 +
  101 + for elm in network:
  102 + self.assertIsInstance(elm, Network)
  103 + self.session.add(elm)
  104 +
  105 + self.session.flush()
  106 + # Tenta ver se gravou
  107 + results = self.session.query(Network).first()
  108 + self.assertIsNotNone(results)
  109 +
91 110 def tearDown(self):
92 111 """
93 112 Remove dados
... ...