示例#1
0
 def iniciar_app(self):
     configs = [['enable-universal-access-from-file-uris', True]]
     uri = 'file://' + urllib.pathname2url(PATH_TEMPLATE_TRANSMISION)
     controller = TransmisionApp()
     controller.add_processor("transmision")
     controller.multi_test = True
     self.app = Ventana(uri, controller)
     configs = [['enable-universal-access-from-file-uris', True]]
     self.app.run(configs, on_close=controller.web_salir, debug=False)
示例#2
0
 def iniciar_app(self):
     configs = [
         ['enable-universal-access-from-file-uris', True]
     ]
     uri = 'file://' + urllib.pathname2url(PATH_TEMPLATE_TRANSMISION)
     controller = TransmisionApp()
     controller.add_processor("transmision")
     controller.multi_test = True
     self.app = Ventana(uri, controller)
     configs = [
         ['enable-universal-access-from-file-uris', True]
     ]
     self.app.run(configs, on_close=controller.web_salir, debug=False)
示例#3
0
class MultipleTransmisionTest(MSADBTest):
    def setUp(self):
        # MSADBTest.setUp(self)

        self.config_original = copy(Configuracion.DEFAULT_CONFIG['glade_file'])
        Configuracion.DEFAULT_CONFIG['glade_file'] = \
            path.join(PATH_CODIGO, UBIC_MODULO,
                      Configuracion.DEFAULT_CONFIG['glade_file'])
        Configuracion.DEFAULT_CONFIG['host'] = "transmision.local"

    def arrancar(self, pkey, cert, ca_cert):
        Configuracion.DEFAULT_CONFIG['key_file'] = \
            path.join(GLOBAL_PATH_CERTS, pkey)
        Configuracion.DEFAULT_CONFIG['cert_file'] = \
            path.join(GLOBAL_PATH_CERTS, cert)
        Configuracion.DEFAULT_CONFIG['ca_file'] = path.join(GLOBAL_PATH_CERTS,
                                                            ca_cert)

        thread.start_new_thread(self.iniciar_app, ())
        sleep(1)

    def iniciar_app(self):
        configs = [
            ['enable-universal-access-from-file-uris', True]
        ]
        uri = 'file://' + urllib.pathname2url(PATH_TEMPLATE_TRANSMISION)
        controller = TransmisionApp()
        controller.add_processor("transmision")
        controller.multi_test = True
        self.app = Ventana(uri, controller)
        configs = [
            ['enable-universal-access-from-file-uris', True]
        ]
        self.app.run(configs, on_close=controller.web_salir, debug=False)

    def crear_recuentos(self, numeros):
        output = path.join(PATH_CODIGO, UBIC_MODULO, "tests/recuentos.txt")
        generar(output, numeros)

    def tearDown(self):
        # MSADBTest.tearDown(self)
        Configuracion.DEFAULT_CONFIG['glade_file'] = self.config_original
        self.app = None

        output = path.join(PATH_CODIGO, UBIC_MODULO, "tests/recuentos.txt")
        try:
            #remove(output)
            pass
        except OSError:
            pass

    def _test_usuario_una_mesa(self):
        pkey = "EJ.01.01.01-ESCUELA_PRIMARIA_N_23.pkey"
        cert = "EJ.01.01.01-ESCUELA_PRIMARIA_N_23.cert"
        ca_cert = "CA_Elecciones_Ejemplo.2015.cert"
        self.crear_recuentos([1])
        self.arrancar(pkey, cert, ca_cert)
        self._test_multi()

    def _test_usuario(self):
        pkey = "EJ.01.01.01-ESCUELA_PRIMARIA_N_23.pkey"
        cert = "EJ.01.01.01-ESCUELA_PRIMARIA_N_23.cert"
        ca_cert = "CA_Elecciones_Ejemplo.2015.cert"
        self.crear_recuentos(range(1, 9))
        self.arrancar(pkey, cert, ca_cert)
        self._test_multi()

    def test_todos(self):
        conn = get_test_connection()
        cur = conn.cursor()
        sql = """
            UPDATE puntos_de_carga
            SET promiscuo = 'SI',
                certificado = 'MSAWC01'
            WHERE id_punto_de_carga = 'CABA'
        """
        cur.execute(sql)
        conn.commit()
        cur.close()

        pkey = "MSAWC01-Wildcard_1.pkey"
        cert = "MSAWC01-Wildcard_1.cert"
        ca_cert = "CA_Elecciones_CABA_05.07.2015.cert"
        self.crear_recuentos(range(1000, 1010))
        self.arrancar(pkey, cert, ca_cert)
        self._test_multi()

    def _test_multi(self):
        Ubicacion.plural_name = NOMBRE_JSON_MESAS_DEFINITIVO
        logger.debug("Conectando")
        self.app.controller.conectar()
        logger.debug("Conectado")

        # while self.app.controller.valid_tags is None:
        #     logger.debug("esperando evento")
        #     esperar_evento()
        sleep(5)

        logger.debug("<" * 5 + "CONECTANDO" + ">" * 5)

        ubic = path.join(PATH_CODIGO, UBIC_MODULO, "tests/save_transmision_id")
        file_ = open(ubic)
        data = pickle.load(file_)

        self.app.controller._evento_tag(*data)
        file_.close()
        esperar_evento()
        ubic = path.join(PATH_CODIGO, UBIC_MODULO,
                         "tests/save_transmision_recuento")
        file_ = open(ubic)
        data_recuento = list(pickle.load(file_))
        file_.close()

        file_ = open(path.join(PATH_CODIGO, UBIC_MODULO,
                               "tests/recuentos.txt"))
        recuentos = list(pickle.load(file_))
        file_.close()
        print len(recuentos), "RECUENTOS"
        sleep(4)
        for i, recuento in enumerate(recuentos, 1):
            logger.info("\n<<<<<" + "ENVIANDO RECUENTO %s>>>>>", i)
            data_recuento[1]["datos"] = recuento
            for j in range(2):
                self.app.controller._evento_tag(*data_recuento)
                sleep(1)

            sleep(1.5)
            self.app.controller.send_command("click_si")
            sleep(3)
            obj_recuento = Recuento.desde_tag(recuento)
            en_db = self.get_db_for_mesa(obj_recuento.mesa)
            for categoria in Categoria.all():
                obj_recuento._resultados[(categoria.codigo, "BLC.BLC")] = \
                    obj_recuento._resultados[(categoria.codigo, "%s_BLC" %
                                              categoria.codigo)]
                del obj_recuento._resultados[(categoria.codigo, "%s_BLC" %
                                              categoria.codigo)]

                obj_recuento._resultados[(categoria.codigo, "NUL.NUL")] = \
                    obj_recuento.listas_especiales["NUL"]
                obj_recuento._resultados[(categoria.codigo, "REC.REC")] = \
                    obj_recuento.listas_especiales["REC"]
                obj_recuento._resultados[(categoria.codigo, "IMP.IMP")] = \
                    obj_recuento.listas_especiales["IMP"]
                obj_recuento._resultados[(categoria.codigo, "TEC.TEC")] = \
                    obj_recuento.listas_especiales["TEC"]
            self.iguales(obj_recuento._resultados, en_db)
        try:
            self.app.controller._salir_definitivo()
        except RuntimeError:
            pass

    def iguales(self, expected, result):
        def _cmp(obj_a, obj_b):
            return cmp(obj_a[1], obj_b[1])
        # from pprint import pprint
        # pprint(sorted(expected.keys(), cmp=_cmp))
        # pprint(sorted(result.keys(), cmp=_cmp))

        self.assertEqual(len(expected.keys()), len(result.keys()))
        for key in expected.keys():
            dest_key = list(key)
            self.assertEquals(expected[tuple(key)],
                              result[tuple(dest_key)])

    def get_db_for_mesa(self, mesa):
        try:
            conn = get_test_connection()
            cur = conn.cursor()
            sql = """SELECT id_cargo,
                            id_candidatura,
                            votos_definitivos
                     FROM planillas_det
                     WHERE id_planilla = %s
                           AND id_candidatura NOT IN %s
            """
            cur.execute(sql, (mesa.id_planilla,
                              tuple(get_config("listas_especiales"))))
            data = cur.fetchall()
            result_dict = {}
            for datum in data:
                key = str(datum[1] if datum[1] != -1 else "%s_BLC" % datum[0])
                key = key.rjust(3, "0")
                result_dict[(unicode(datum[0]), unicode(key))] = datum[2]
        except Exception, e:
            logger.debug(e)
        return result_dict
示例#4
0
class MultipleTransmisionTest(MSADBTest):
    def setUp(self):
        # MSADBTest.setUp(self)

        self.config_original = copy(Configuracion.DEFAULT_CONFIG['glade_file'])
        Configuracion.DEFAULT_CONFIG['glade_file'] = \
            path.join(PATH_CODIGO, UBIC_MODULO,
                      Configuracion.DEFAULT_CONFIG['glade_file'])
        Configuracion.DEFAULT_CONFIG['host'] = "transmision.local"

    def arrancar(self, pkey, cert, ca_cert):
        Configuracion.DEFAULT_CONFIG['key_file'] = \
            path.join(GLOBAL_PATH_CERTS, pkey)
        Configuracion.DEFAULT_CONFIG['cert_file'] = \
            path.join(GLOBAL_PATH_CERTS, cert)
        Configuracion.DEFAULT_CONFIG['ca_file'] = path.join(
            GLOBAL_PATH_CERTS, ca_cert)

        thread.start_new_thread(self.iniciar_app, ())
        sleep(1)

    def iniciar_app(self):
        configs = [['enable-universal-access-from-file-uris', True]]
        uri = 'file://' + urllib.pathname2url(PATH_TEMPLATE_TRANSMISION)
        controller = TransmisionApp()
        controller.add_processor("transmision")
        controller.multi_test = True
        self.app = Ventana(uri, controller)
        configs = [['enable-universal-access-from-file-uris', True]]
        self.app.run(configs, on_close=controller.web_salir, debug=False)

    def crear_recuentos(self, numeros):
        output = path.join(PATH_CODIGO, UBIC_MODULO, "tests/recuentos.txt")
        generar(output, numeros)

    def tearDown(self):
        # MSADBTest.tearDown(self)
        Configuracion.DEFAULT_CONFIG['glade_file'] = self.config_original
        self.app = None

        output = path.join(PATH_CODIGO, UBIC_MODULO, "tests/recuentos.txt")
        try:
            #remove(output)
            pass
        except OSError:
            pass

    def _test_usuario_una_mesa(self):
        pkey = "EJ.01.01.01-ESCUELA_PRIMARIA_N_23.pkey"
        cert = "EJ.01.01.01-ESCUELA_PRIMARIA_N_23.cert"
        ca_cert = "CA_Elecciones_Ejemplo.2015.cert"
        self.crear_recuentos([1])
        self.arrancar(pkey, cert, ca_cert)
        self._test_multi()

    def _test_usuario(self):
        pkey = "EJ.01.01.01-ESCUELA_PRIMARIA_N_23.pkey"
        cert = "EJ.01.01.01-ESCUELA_PRIMARIA_N_23.cert"
        ca_cert = "CA_Elecciones_Ejemplo.2015.cert"
        self.crear_recuentos(range(1, 9))
        self.arrancar(pkey, cert, ca_cert)
        self._test_multi()

    def test_todos(self):
        conn = get_test_connection()
        cur = conn.cursor()
        sql = """
            UPDATE puntos_de_carga
            SET promiscuo = 'SI',
                certificado = 'MSAWC01'
            WHERE id_punto_de_carga = 'CABA'
        """
        cur.execute(sql)
        conn.commit()
        cur.close()

        pkey = "MSAWC01-Wildcard_1.pkey"
        cert = "MSAWC01-Wildcard_1.cert"
        ca_cert = "CA_Elecciones_CABA_05.07.2015.cert"
        self.crear_recuentos(range(1000, 1010))
        self.arrancar(pkey, cert, ca_cert)
        self._test_multi()

    def _test_multi(self):
        Ubicacion.plural_name = NOMBRE_JSON_MESAS_DEFINITIVO
        logger.debug("Conectando")
        self.app.controller.conectar()
        logger.debug("Conectado")

        # while self.app.controller.valid_tags is None:
        #     logger.debug("esperando evento")
        #     esperar_evento()
        sleep(5)

        logger.debug("<" * 5 + "CONECTANDO" + ">" * 5)

        ubic = path.join(PATH_CODIGO, UBIC_MODULO, "tests/save_transmision_id")
        file_ = open(ubic)
        data = pickle.load(file_)

        self.app.controller._evento_tag(*data)
        file_.close()
        esperar_evento()
        ubic = path.join(PATH_CODIGO, UBIC_MODULO,
                         "tests/save_transmision_recuento")
        file_ = open(ubic)
        data_recuento = list(pickle.load(file_))
        file_.close()

        file_ = open(path.join(PATH_CODIGO, UBIC_MODULO,
                               "tests/recuentos.txt"))
        recuentos = list(pickle.load(file_))
        file_.close()
        print len(recuentos), "RECUENTOS"
        sleep(4)
        for i, recuento in enumerate(recuentos, 1):
            logger.info("\n<<<<<" + "ENVIANDO RECUENTO %s>>>>>", i)
            data_recuento[1]["datos"] = recuento
            for j in range(2):
                self.app.controller._evento_tag(*data_recuento)
                sleep(1)

            sleep(1.5)
            self.app.controller.send_command("click_si")
            sleep(3)
            obj_recuento = Recuento.desde_tag(recuento)
            en_db = self.get_db_for_mesa(obj_recuento.mesa)
            for categoria in Categoria.all():
                obj_recuento._resultados[(categoria.codigo, "BLC.BLC")] = \
                    obj_recuento._resultados[(categoria.codigo, "%s_BLC" %
                                              categoria.codigo)]
                del obj_recuento._resultados[(categoria.codigo,
                                              "%s_BLC" % categoria.codigo)]

                obj_recuento._resultados[(categoria.codigo, "NUL.NUL")] = \
                    obj_recuento.listas_especiales["NUL"]
                obj_recuento._resultados[(categoria.codigo, "REC.REC")] = \
                    obj_recuento.listas_especiales["REC"]
                obj_recuento._resultados[(categoria.codigo, "IMP.IMP")] = \
                    obj_recuento.listas_especiales["IMP"]
                obj_recuento._resultados[(categoria.codigo, "TEC.TEC")] = \
                    obj_recuento.listas_especiales["TEC"]
            self.iguales(obj_recuento._resultados, en_db)
        try:
            self.app.controller._salir_definitivo()
        except RuntimeError:
            pass

    def iguales(self, expected, result):
        def _cmp(obj_a, obj_b):
            return cmp(obj_a[1], obj_b[1])

        # from pprint import pprint
        # pprint(sorted(expected.keys(), cmp=_cmp))
        # pprint(sorted(result.keys(), cmp=_cmp))

        self.assertEqual(len(expected.keys()), len(result.keys()))
        for key in expected.keys():
            dest_key = list(key)
            self.assertEquals(expected[tuple(key)], result[tuple(dest_key)])

    def get_db_for_mesa(self, mesa):
        try:
            conn = get_test_connection()
            cur = conn.cursor()
            sql = """SELECT id_cargo,
                            id_candidatura,
                            votos_definitivos
                     FROM planillas_det
                     WHERE id_planilla = %s
                           AND id_candidatura NOT IN %s
            """
            cur.execute(
                sql,
                (mesa.id_planilla, tuple(get_config("listas_especiales"))))
            data = cur.fetchall()
            result_dict = {}
            for datum in data:
                key = str(datum[1] if datum[1] != -1 else "%s_BLC" % datum[0])
                key = key.rjust(3, "0")
                result_dict[(unicode(datum[0]), unicode(key))] = datum[2]
        except Exception, e:
            logger.debug(e)
        return result_dict