Správičky 2 797 Blogy 945 Fórum 18 535

Prehľad diskusie

photo
Databazove testy
harrison314
10. 6. 2017 10:17:41
photo
RE: Databazove testy
T
11. 6. 2017 16:55:22
photo
RE: Databazove testy
harrison314
11. 6. 2017 18:58:16
photo
RE: Databazove testy
T
12. 6. 2017 9:47:03
photo
RE: Databazove testy
harrison314
15. 6. 2017 9:20:36
photo
RE: Databazove testy
T
23. 6. 2017 15:26:54
photo
RE: Databazove testy
harrison314
25. 6. 2017 18:43:36
photo
RE: Databazove testy
harrison314
24. 7. 2017 21:44:50
photo
RE: Databazove testy
T
25. 7. 2017 15:11:23
photo
RE: Databazove testy
harrison314
25. 7. 2017 19:12:23
photo
RE: Databazove testy
liero
25. 7. 2017 19:34:54
photo
RE: Databazove testy
harrison314
25. 7. 2017 19:40:07
photo
RE: Databazove testy
liero
26. 7. 2017 9:09:18
photo
RE: Databazove testy
T
26. 7. 2017 9:24:11
photo
RE: Databazove testy
T
26. 7. 2017 9:25:33
photo
RE: Databazove testy
T
26. 7. 2017 9:27:17
photo
RE: Databazove testy
liero
26. 7. 2017 12:06:33
photo
RE: Databazove testy
harrison314
26. 7. 2017 19:38:49
photo
RE: Databazove testy
harrison314
26. 7. 2017 20:36:52

Databazove testy

photo
harrison314
10. 6. 2017 10:17:41
Body: 1070
Najaktívnejší č.: 24

Databazove testy

Zdravim,
mam zahadny problem.
Spravil som si testy testujuce databazovu vrstvu.
Pri inicializacii testovania sa vytvori nova databaza (MS SQL Express 2016),
nasadi sa dacpac balicek (pomocou SqlPackage.exe), ktory obsahuje schemu, CRL procedury a inicializaciu ciselnikov cez MERGE,
potom sa spustaju testy, ktore su obalene v TransactionScope.

Problem je, ze ked v teste sleketnem hodnoty s cislniku, tak sa nevrati nic (prazdny zoznam hodnot),
no ked sa don v teste pokusim insertnut hodnoty, dostanem vynimku, ze rovnake Id uz jestvuje.
Ked test stopnem v debagu a databzu otvorim pomocou SQL Server Studia, tak na ten sty dopyt hodnoty ciselnika dostanem.
V oboch pripadoch pouzivam windows autentifikaciu.

Viete poradit cim to bude?

technologie:
MS SQL 2016 Express
ADO.NET a ciste SQL
MS Test
SSDT

[Reakcia]

photo
T
11. 6. 2017 16:55:22
Body: 21305
Najaktívnejší č.: 2

RE: Databazove testy

1. Preco su "testy obalene v transaction scope"?

2. Nechce sa mi strielat, skus si odsniffovat na urovni sql, co sa realne vola a v akom poradi, teoreticky moze byt problem prave tranzakciach alebo zlom poradi spustania testov

Tomáš Zeman, MCSD.NET, MCPD

[Reakcia]

photo
harrison314
11. 6. 2017 18:58:16
Body: 1070
Najaktívnejší č.: 24

RE: Databazove testy

1. Aby sa vykonal rollback na vsteky zmeny v DB, ktore sa vykonaly v teste.

2. Testy su uplne oddelene, kazdy si nasetupuje to co potrebuje. Nezalezi na poradi ich spustania.

 

Ide o to, ze nevidim ciselniky, ktore sa pmocou API menit neda. Presnejsie nemozem ich selektnut, Ked pouzijem len Id hodnoty ako cudzi kluc tak vsteky operacie sa vykonaju.

 

To ze som si presiel vsetky izolation levely bolo ako prve co som skusal, no vysledok vzdy rovnaky.

[Reakcia]

photo
T
12. 6. 2017 9:47:03
Body: 21305
Najaktívnejší č.: 2

RE: Databazove testy

1. To nerob, tym si zabil cely integracny test (bezi v zasadne inych podminkach) a dacpac vies redeploynut znova naco to robis? Navyse, ak Ti tam bude vznikat nekonzistencia a pod., tak sa ku nej uz nedostanes po rollbacku

2. Sniffer + debugger, bohuzial, nic ma nenapada. Pokusne daj prec ten tran scope, ci to zbehne.

Tomáš Zeman, MCSD.NET, MCPD

[Reakcia]

photo
harrison314
15. 6. 2017 9:20:36
Body: 1070
Najaktívnejší č.: 24

RE: Databazove testy

1. Cielom tychto testov je zistit, ci mam spravne napisane SQL-ko a mappovanie. Ano dacpac viem redeloynut, ale trva to 20 az 50 sekund a mam cez 80 testov. V tomto pripade mi pride redeplynutie nie prilis stastne. To radcej pouzit kniznicu Respawn, alebo nejaky Db snapshot.

 

Dat prec TransactionScope som skusal ako prve, a tiez mi neselktne cisleniky. Preto som pisal sem, lebo vsteky standardne sposoby odhalenia chyby zlyhali. Skusal som aj rôzne prístupy a šialene experimenty s komitmy a rollbackmi...

[Reakcia]

photo
T
23. 6. 2017 15:26:54
Body: 21305
Najaktívnejší č.: 2

RE: Databazove testy

Tak pouzi sql script, ak je dacpac taky pomaly ale v principe ak mas urobene build prostredie, tak integracne testy mozu bezat "asynchronne" a nijako Ta to neobtazuje. Ale pre mna rollback je kategoricke zlo, specialne ked testujes, ci mas spravne napisane sqlko. Aj snapshot je samozrejme dobre riesenie, respawn som nepoznal(zaujimava vec), ale tiez pre mna tazkoprijatelne riesenie.(vracanie stavu spat mi tiez smrdi)

Toto je uz naozaj len na debugger a sniffer, tazko pomoct, verim, ze si to uz ale vyriesil.

 

Tomáš Zeman, MCSD.NET, MCPD

[Reakcia]

photo
harrison314
25. 6. 2017 18:43:36
Body: 1070
Najaktívnejší č.: 24

RE: Databazove testy

Nie, este som s tym nepohol.

Je to sukromny projekt, ktory je iba pre vlastne pouzitie a dorabam don reverzne testy (aj ked som vdaka nim opravil 4 chyby, ktore sa neprejavovali).

Momentalne chcem vydat dalsiu verziu MassiveDynamicProxyGenerator a potom sa hadam do toho pustim. Dany problem ma nijako nepali, chcem to vyriesit hlavne pre know-how.

[Reakcia]

photo
harrison314
24. 7. 2017 21:44:50
Body: 1070
Najaktívnejší č.: 24

RE: Databazove testy

Zistil som, ze to nie je problem testov a tranzakcii.

V aplikacii sa mi to prejavuje rovnako po hromacnych insertoch,

insretnem niekolko tisic riadkov po  roznych tabulkach, spravi sa niekolko Merge statmentov a nasledne data v cislnikoch (vytvarali sa cez merge) nie su vidilene pre Selekty, ale pre czdie kluce ano.

[Reakcia]


photo
harrison314
25. 7. 2017 19:12:23
Body: 1070
Najaktívnejší č.: 24

RE: Databazove testy

a ako si zistil ze su "viditelne ..... pre cudzie kluce"?

 

- Tak, ze niektore ciselnikove tabulky zdpovedaju enumom, a ked insernem do tabulky a cudzi kluc vypnim z enumu, tak zaznam sa bez problemov ulozi.

 

V noci ma napadlo, ze ak tam tie data su a s Management studia ich vidim, problem by mohol byt v nejakej cache.  Tak som Query upravil takto:

SELECT [Id], [Name] FROM [dbo].[Role] ORDER BY [Id] ASC OPTION (OPTIMIZE FOR UNKNOWN)

 

A vyzeralo, ze to pomohlo, parkrat som spustil test a data nacitalo, ked som ho spustil neskor, zas data nenacitalo.

[Reakcia]

photo
liero
25. 7. 2017 19:34:54
Body: 9290
Najaktívnejší č.: 6

RE: Databazove testy

skusal si dropnut DB a vytvorit ju nanovo? pravdepodobne ano, ale len pre istotu...

[Reakcia]

photo
harrison314
25. 7. 2017 19:40:07
Body: 1070
Najaktívnejší č.: 24

RE: Databazove testy

@liero: test si vytvori vzdy novu databazu, robi sa to vzdy a automaticky.

Skusal som pozarvarat connection cez close, vypnut pooling, veci ako CHECKPOINT, DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE;  a podobne. 

[Reakcia]

photo
liero
26. 7. 2017 9:09:18
Body: 9290
Najaktívnejší č.: 6

RE: Databazove testy

No mne to znie, ako keby si mal niekde necommitnutu tranzakciu....

[Reakcia]

photo
T
26. 7. 2017 9:24:11
Body: 21305
Najaktívnejší č.: 2

RE: Databazove testy

@harrison:

asi si necital ten wont fix spojeny s mergeom, ktory som Ti linkoval... to nie je potvrdenie, ze tam hodnoty su, moze to len znamenat obidenie checku referencnej integrity.

@liero:

ak by mal necommitnutu tranzakciu, tak tie udaje neuvidi z mgmt studia...len default je RC. (overit sa to da napr. cez SELECT s NoLock hintom)

 

Tomáš Zeman, MCSD.NET, MCPD

[Reakcia]

photo
T
26. 7. 2017 9:25:33
Body: 21305
Najaktívnejší č.: 2

RE: Databazove testy

a s mergeom su spojene dalsie problemy, kedy sa moze spravat nedeterministicky (ak ho zle pouzivas)....vid. MSDN.

Tomáš Zeman, MCSD.NET, MCPD

[Reakcia]

photo
T
26. 7. 2017 9:27:17
Body: 21305
Najaktívnejší č.: 2

RE: Databazove testy

ale je to aj tak cele strata casu ako som pisal vyssie, uplne zly koncept integracnych testov

Tomáš Zeman, MCSD.NET, MCPD

[Reakcia]

photo
liero
26. 7. 2017 12:06:33
Body: 9290
Najaktívnejší č.: 6

RE: Databazove testy

Nemohlo sa stat, ze select robis skor ako skonci bulk insert?

[Reakcia]

photo
harrison314
26. 7. 2017 19:38:49
Body: 1070
Najaktívnejší č.: 24

RE: Databazove testy

@T: cital som to.

Dnes som skusat zmenit MERGE za podmieneny INSERT - nepomohlo,

cast kodu, ktora vytvara cislniky som s postdeploy skriptu presunul do stored proceduri a volam ju az po depolii  bez tranzakcie - nepomohlo,

preinstaloval som MS SQL (lebo mi blbol MS SQL Brooker), stiahol updaty - nepomohlo. 

Dokonca som skusal aj take veci, ako deploinut dacpac, restartnut stroj a tak spustit aplikaciu, no bez vysledku. 

@liero: skusal som do testu dat breakpoint, pred metodu, ktora vycita role, test nanom zastal, ja otvorim MS SQL Management studio, tam mi hodnoty selektne, pohnem sa v kode F10 dalej, ale tu mi hodnoty nenacita.

Naozaj s toho zacinam byt zufaly, nikdy som sa s podobnym spravanim nestretol, a to ani pri ovela vetcich projektoch, ktore s databazou narabali rovnako.

[Reakcia]

photo
harrison314
26. 7. 2017 20:36:52
Body: 1070
Najaktívnejší č.: 24

RE: Databazove testy

Vedel som, ze to je len nejaka hlupa chyba a aj bola...

                  using (IDataReader reader = command.ExecuteReader())
                    {
                        while (reader.NextResult())
                        {
                            Role role = new Role();
                            role.Id = (int)reader["Id"];
                            role.Name = (string)reader["Name"];

                            roles.Add(role);
                        }
                    }

 

[Reakcia]



Najaktívnejší užívatelia
1. 37750 b. photo vlko
2. 21305 b. photo T
3. 15955 b. photo spigi
4. 15450 b. photo Anonymous
5. 11110 b. photo dudok
6. 9290 b. photo Liero
7. 6885 b. photo siro
8. 6245 b. photo slavof
9. 5355 b. photo duracellko
10. 4445 b. photo xxxmatko