Commit 2c229ccfa1d31d901a9e895d471449b08dfb2df8
Exists in
master
Gravação e testes das redes
Showing
4 changed files
with
53 additions
and
2 deletions
Show diff stats
... | ... | @@ -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
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 | ... | ... |