Opened 13 years ago
Last modified 13 years ago
#1470 reopened defect
Almacenamiento de series y fechados en OZA
Reported by: | Pedro Gea | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | highest | Milestone: | Mantainance |
Component: | Kernel | Version: | 3.1 |
Severity: | critical | Keywords: | |
Cc: |
Description
Relacionado con el tique #1451 se generan las siguientes observaciones:
- Es necesario controlar y homogeneizar (quizá mediante una variable global) el uso de fechado visibles al hacer la carga de un OZA. Véase el ejemplo.
- El operador
==
no sirve para comparar timesets. Por eso se hace uso de la alternativaDatingAddress
.
En el primer archivo se crean 4 series (dos finitas y dos infinitas) cuyos fechados tienen el mismo nombre pero son distintos.
En el segundo archivo se prueba a carga ese OZA en dos contextos distintos: en uno no existe un fechado visible con el nombre del fechado guardado y en otro sí.
Attachments (2)
Change History (12)
Changed 13 years ago by
Changed 13 years ago by
comment:1 Changed 13 years ago by
comment:3 Changed 13 years ago by
comment:4 Changed 13 years ago by
comment:5 Changed 13 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:6 Changed 13 years ago by
comment:7 Changed 13 years ago by
El problema parece que ya está resuelto en las nuevas veriones v3.1 p007 y v3.2 b007.
Al menos pasan todos los tests que se me han ocurrido, aunque habrá que vigilar porque la complejidad de las situaciones que se pueden dar es tremenda.
A continuación presento los tests de auto-chequeo correspondientes a este ticket, como ejemplo del tipo de cosas que debemos hacer para hacer comprobaciones automáticas de calidad. Se trata de que el propio código TOL construya una variable Real que debe ser cierta, si el test es determinista, o un número entre 0 y 1 si hay incertidumbre.
En el fichero check.01.tol que copio a continuación, se comprueba que efectivamente forzamos el uso de los fechados almacenados en el OIS.
#Embed "functions.tol"; //Forzamos el uso de los fechados almacenados en el OIS Real Ois.ForceStoredTimeSet := True; //Guardamos el número de warnings y errores antes de ejecutar Real numWar_0 = Copy(NWarning); Real numErr_0 = Copy(NError); //Carga del OZA Set series = { TimeSet AUX = WD(3); Set Ois.Load("s1_4.oza")[1] }; //Guardamos el número de warnings y errores después de ejecutar Real numWar_1 = Copy(NWarning); Real numErr_1 = Copy(NError); //Conjunto de chequeo que debe dar todo cierto Set ok = [[ // WD(1) == WD(1) Real (DatingAddress(series::s1) == DatingAddress(series::s3)); // WD(2) == WD(2) Real (DatingAddress(series::s2) == DatingAddress(series::s4)); // WD(1) != WD(2) Real (DatingAddress(series::s1) != DatingAddress(series::s2)); // WD(1) != WD(2) Real (DatingAddress(series::s3) != DatingAddress(series::s4)); //No debe dar warnings Real numWar_1 == numWar_0; //No debe dar errores Real numErr_1 == numErr_0 ]]; Real ok.all = Group("And",ok);
En el fichero check.02.tol que copio a continuación, se comprueba que si existe un fechado previo accesible se usará:
#Embed "functions.tol"; //Si existe un fechado previo accesible se usará Real Ois.ForceStoredTimeSet := False; //Guardamos el número de warnings y errores antes de ejecutar Real numWar_0 = Copy(NWarning); Real numErr_0 = Copy(NError); //Carga del OZA Set series = { TimeSet AUX = WD(3); Set Ois.Load("s1_4.oza")[1] }; //Guardamos el número de warnings y errores después de ejecutar Real numWar_1 = Copy(NWarning); Real numErr_1 = Copy(NError); //Conjunto de chequeo que debe dar todo cierto Set ok = [[ // WD(1) != WD(3) Real (DatingAddress(series::s1) != DatingAddress(series::s3)); // WD(2) != WD(3) Real (DatingAddress(series::s2) != DatingAddress(series::s4)); // WD(1) != WD(2) Real (DatingAddress(series::s1) != DatingAddress(series::s2)); // WD(3) == WD(3) Real (DatingAddress(series::s3) == DatingAddress(series::s4)); //Debe dar warnings porque ha cambiado el fechado Real numWar_1 > numWar_0 ; //No debe dar errores Real numErr_1 == numErr_0 ]]; Real ok.all = Group("And",ok);
comment:8 Changed 13 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Trabajando con el modo Real Ois.ForceStoredTimeSet = False
el ejemplo ejA2
que se adjuntó produce las siguientes advertencias:
Warning: [10] OIS: Dating of loaded Serie s2={ TimeSet AUX=WD(2); CalInd(C, AUX) }is not compatible with original dating AUX= between [y2011m01d04,y2011m12d27] Warning: [11] OIS: Dating of loaded Serie s1={ TimeSet AUX=WD(1); CalInd(C, AUX) }is not compatible with original dating AUX= between [y2011m01d03,y2011m12d26] Warning: [12] OIS: Dating of loaded Serie s2={ TimeSet AUX=WD(2); CalInd(C, AUX) }is not compatible with original dating AUX= between [y2011m01d04,y2011m12d27]
y no carga las series adecuadamente.
Según parece, aunque no haya ningun fechado "visible" la primera de las series hace visible su fechado y por eso intenta aplicarse a las demás. Esto no debería pasar.
Tengo dudas sobre la semántica del flag, y no puedo inferirlo a partir de los ejemplo. Suponiendo que el flag se llame FechadoVisible
FechadoVisible = 0
: qué implica?FechadoVisible <> 0
: qué implica?