Blog do projektu Open Source JavaHotel

poniedziałek, 5 lipca 2010

Selenium

It is high time to start creating regression testing suite for my GWT application. The choice is Selenium, well known framework for testing web application. I decided also to use Python and PythonUnit together with my BoaTester as RC testing framework. For some mysterious reason NetBeans plugin for Python does not work with PythonUnit in debugging mode, cannot set breakpoint inside unittest classes. But a little ancient IDLE framework for Python behaves nicely, it is enough for a such small development.
As for every GUI application the main challenge is to locate GUI objects on the screen - a nightmare for every test automation engineer. Instead of fighting with constant changing object description on the screen I decided simply to tune my application that every "selectable" object should have it's distinct name or id.
It can be accomplished by setting proper value for every object. For instance: for buttons following command should be applied:
Button but;
.... 
but.getElement().setId(bId);
Another challenge is of course to synchronize test with RPC. For the time being this synchronization is accomplished by time.sleep(5) command (wait 5 seconds), but obviously more sophisticated method should be devised in near future.
Another challenge was the selecting rows in a table - I'm using Google Visualization Table. For some reason clicking on the row is not captured by Selenium IDE so I could not use it as an advice. But finally Selenium command :
s = "xpath=//table[@class='google-visualization-table-table']/tbody/tr[" + str(no) + "]/td"
sel.mouse_over(s)
resolved that issue.
I also found that preparing test case is very time consuming effort and can be accomplished mostly by method "try and fix". Preparing a test containing 10-15 steps and 3-4 verification points takes 2-3 hours and I don't have any idea how to make this task simpler.
May be the solution is to create a solution that will replace Python sequence like:
        sel.click(self.TESTOWYREJBUTTON)
        time.sleep(5);
        sel.click(self.ADDBUTTON)
       
        sel.type(self.TEXT1, "aa")
        sel.type(self.TEXT2, "aa")
        sel.type(self.KWOTA, "35")
        sel.click(self.ACCEPT);
        time.sleep(5)
        sel.mouse_over(self.TEXT1)
        mess = sel.get_text("xpath=/html/body/div[3]/div/div")
        print mess
        self.failUnless(mess.find("Obydwa napisy") != -1)
        sel.type(self.TEXT2, "a")
        sel.click(self.ACCEPT);
        time.sleep(5)
with a simple text file which will read all steps and verification points from flat text file thus avoiding this hard code Python programming.

sobota, 3 lipca 2010

Cesarz

"Cesarz"
Mój przyjacielu, można by spisać bibliotekę donosów, jakie latami spływały do cesarskiego ucha przeciwko najbliższej postawionej mu osobie, ministrowi pióra - Walde Giyorgisowi. Była to najbardziej przewrotna, odpychająca i skorumpowana postać, jaką kiedykolwiek nosiły parkiety naszego pałacu. Samo złożenie donosu na tego człowieka groziło skrajnie ponurymi konsekwencjami. Jakże musiało być już źle, skoro mimo to - donosili. Ale ucho pańskie było zawsze zamknięte. Walde Giyorgis mógł robić, co chciał, a rozpasanie jego nie miało granic. Jednakże zaślepiony w swojej bucie i bezkarności wziął raz udział w zebraniu frakcji spiskowej, o czym wywiad pałacowy powiadomił czcigodnego pana. Pan czekał, aż Walde Giyorgis powie mu o tym postępku sam, ale ten nie wspomniał o sprawie ani słowem, czyli - inaczej mówiąc - złamał zasadę lojalności.
Cała ta informacja jest mocno dziwaczna. Wolde Guiorguis był wieloletnim, zaufanym współpracownikiem Haile Selassie (towarzyszył mu na wygnaniu w Wielkiej Brytanii), ale nic nie wiadomo o tym, żeby miał być osobistością "przewrotną, odpychającą i skorumpowaną ... zaślepioną w bucie i bezkarności".   Jako człowiek z ludu posiadający ogromny wpływ na monarchę na pewno był obiektem niechęci arystokratów. W pewnym momencie jego przemożne wpływy stały się niewygodne dla samego Haile Selassie i wykorzystując ten fakt, bracia Makonnen i Aklilou, także zazdrośni o jego pozycję nakłonili cesarza do zdymisjonowania Wolde Guiorguisa.

czwartek, 1 lipca 2010

ODBC 64 bit and DB2

Finally I installed ODBC DB2 64 bit for Linux. Nothing special, all what what is needed to do is to modify /etc/odbcinst.ini file (or use ODBConfig tool) with driver definition like:

[DB2]
Description        =
Driver        = /opt/ibm/db2/V9.7/lib32/libdb2.so
Driver64        = /opt/ibm/db2/V9.7/lib64/libdb2.so
Setup        =
Setup64        =
UsageCount        = 1
CPTimeout        =
CPReuse        = 
Next step is to define data source. Unfortunately ODBCConfig tool does not work for this purpose (probably because setup driver is not accessible). But it is enough to modify /etc/odbc.ini (or local odbc.ini) file, ODBConfig is nothing more than GUI tool for modifying those files.

I added section like:
[SAMPLE]
DESCRIPTION = Connection to DB2
DRIVER = DB2
Database = SAMPLE
And from time on ODBC connection to DB2 world is open and ready to use.


$ isql SAMPLE db2inst1 db2inst1
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select * from emp where JOB = 'MANAGER'+-------+-------------+--------+----------------+---------+--------+--------------------+---------+--------+----+--------------------+------------+------------+------------+| EMPNO | FIRSTNME    | MIDINIT| LASTNAME       | WORKDEPT| PHONENO| HIREDATE           | JOB     | EDLEVEL| SEX| BIRTHDATE          | SALARY     | BONUS      | COMM       |+-------+-------------+--------+----------------+---------+--------+--------------------+---------+--------+----+--------------------+------------+------------+------------+| 000020| MICHAEL     | L      | THOMPSON       | B01     | 3476   | 2003-10-10 00:00:00| MANAGER | 18     | M  | 1978-02-02 00:00:00| 94250,00   | 800,00     | 3300,00    || 000030| SALLY       | A      | KWAN           | C01     | 4738   | 2005-04-05 00:00:00| MANAGER | 20     | F  | 1971-05-11 00:00:00| 98250,00   | 800,00     | 3060,00    || 000050| JOHN        | B      | GEYER          | E01     | 6789   | 1979-08-17 00:00:00| MANAGER | 16     | M  | 1955-09-15 00:00:00| 80175,00   | 800,00     | 3214,00    || 000060| IRVING      | F      | STERN          | D11     | 6423   | 2003-09-14 00:00:00| MANAGER | 16     | M  | 1975-07-07 00:00:00| 72250,00   | 500,00     | 2580,00    || 000070| EVA         | D      | PULASKI        | D21     | 7831   | 2005-09-30 00:00:00| MANAGER | 16     | F  | 2003-05-26 00:00:00| 96170,00   | 700,00     | 2893,00    || 000090| EILEEN      | W      | HENDERSON      | E11     | 5498   | 2000-08-15 00:00:00| MANAGER | 16     | F  | 1971-05-15 00:00:00| 89750,00   | 600,00     | 2380,00    || 000100| THEODORE    | Q      | SPENSER        | E21     | 0972   | 2000-06-19 00:00:00| MANAGER | 14     | M  | 1980-12-18 00:00:00| 86150,00   | 500,00     | 2092,00    |+-------+-------------+--------+----------------+---------+--------+--------------------+---------+--------+----+--------------------+------------+------------+------------+SQLRowCount returns -17 rows fetched
Next step to 64 bit world taken.

Byliśmy na koncercie

Byliśmy na "Weselu Figara" 19 czerwca 2010 roku w Warszawskiej Operze Kameralnej wystawionym w ramach tegorocznego Festiwalu Mozartowskiego.
"Wesele Figara" to dzieło powszechnie znane, lubiane, chętnie wystawiane i nagrywane, chociaż była to dla nas pierwsza okazja zobaczenia tej opery na żywo. Na pewno się nie rozczarowaliśmy, było to bardzo udana i dobrze przygotowana realizacja. Wszyscy soliści stanęli na wysokości zadania, chociaż nie da się powiedzieć, żeby któraś z ról specjalnie zapadła w pamięć. Trudno uważać to jednak za wadę przedstawienia, "Wesele Figara" to sztuka o skomplikowanej strukturze rozgrywającej się między postaciami z których każda pełni istotną rolę w całej intrydze. Potrzebna jest równa praca całego zespołu wykonawców, gdy ktoś zawodzi, to cała układanka się rozsypuje i żadne gwiazdorskie popisy nic nie pomogą. 
Andrzej Klimczak bardzo dobrze, i wokalnie i aktorsko poradził sobie z tytułową rolą Figara, chociaż słynna aria "Non più andrai" (ta sama która zagwizdał Leporello w Don Giovannim) nie zebrała burzy oklasków.  Podobała się Zuzanna w wykonaniu Marty Boberskiej, tak samo Witold Żołądkiewicz jako fałszywy i podstępny hrabia Almaviva. Tatiana Hempel jako szlachetna hrabina Almaviva może trochę wypadła zbyt pompatycznie. Bardzo się także podobała Julita Mirosławska jako Cherubin.
Scenografia, jak na skromną scenę Warszawskiej Opery Kameralnej była bardzo bogata, udanie został ujęty kontrast między skromną izbą Figara w I akcie a przepychem hrabiowskiego pałacu w II i III.
Warto także dodać, że w przedstawieniu pojawiły się często pomijane arie Marceliny i Don Basilia na początku IV aktu.

W sztuce Beaumarchais Figaro w ostatniej scenie gwałtownie mówi:
"Ponieważ jesteś (hrabio Almaviva) wielki panem wyobrażasz sobie również, że jesteś geniuszem. Ale w jaki sposób ? Ja się stałeś tak bogatym i możnym, hrabio Almviva ? Tak naprawdę, jedyny wysiłek jaki w to włożyłeś, to wyłącznie, że się urodziłeś !"
W operze Mozarta, ze względów cenzuralnych, te antyfeudalne wątki zostały zamienione. W ostatnim akcie Figaro również śpiewa z wielką pasją, ale tutaj obiektem krytyki jest ktoś inny:
Otwórzcie oczy, zabiegani i ogłupiali mężczyźni,
I spójrzcie na te kobiety, jakimi są naprawdę,
Owe "boginie", jak podpowiadają oczarowane zmysły,
Którym osłabiony rozum składa hołdy,
Ale to czarownice rzucające zaklęcia ku naszej zgubie,
Syreny, które śpiewają aby nas zwieść,
Sowy, który chcą nas oskubać,
Komety, które zwodzą pozorem światła,
Róże najeżone kolcami,
Lisice, które nas wabią,
Uśmiechają się, ale niczym niedźwiedzice,
Złowrogie gołębice,
Mistrzynie zwodzenia,
Przyjaciółki kłopotów i trosk,
Kłamią i oszukują,
Próżno szukać w nich miłości,
Ani litości,
Myślę, że nie trzeba już mówić nic więcej,
Gdyż wszyscy znają to świetnie.
Mozart na pewno nie był rewolucjonistą, nie marzył o tym, żeby znosić bariery klasowe, ale żeby w ówczesnej strukturze społecznej podnieść się do góry chociaż o jeden szczebel. Trudno powiedzieć, czy mu się udało czy nie, ale na szczęście dzisiaj oceniamy go według zupełnie innej skali.
Czy da się jednak zamiast walki klas wypatrzyć w tej operze tak modną współcześnie walkę płci ? Raczej trudno, z jednej strony jest tutaj wyraźnie skontrastowany świat kobiet i świat mężczyzn, ale na końcu się okazuje, że mimo różnic wszyscy mają ten sam cel, czyli osiągnięcie szczęścia.
Chyba najlepiej nie szukać w tej operze rzeczy, których tam nie ma, i po prostu znaleźć przyjemność w słuchaniu pięknej muzyki doskonale oddającej niebłahą intrygę i razem z bohaterami cieszyć się szczęśliwym zakończeniem.

piątek, 25 czerwca 2010

Cesarz

"Cesarz"

Nieudana próba zamachu stanu z 1960 roku.
Wszystkie informacje jakie przekazuje Kapuściński ustami niejakiego A.W to jakaś mieszanina bzdur i nonsensów.
szeptano, że cesarz ma wątpliwości, czy rzeczywiście jest to jego syn. Coś tam nie zgadzało mu się w datach między jego podróżami a terminem uszczęśliwienia cesarzowej pierwszym potomkiem.
To zmyślenie Kapuścińskiego, nigdy nie istniały tego typu pogłoski i podejrzenia.
Gwardia była oświecona i dobrze płatna,  a wojsko ciemne i biedne. Teraz generałowie wykorzystują ten antagonizm, żeby rzucić armię przeciwko gwardii. Mówią żołnierzom - gwardziści chcą władzy, żeby móc was wyzyskiwać. To, co mówią, jest cyniczne, ale trafia wojsku do przekonania. Żołnierze wołają - chcemy zginąć za cesarza!
To zmyślenie Kapuścińskiego. Zołnierze wykonywali rozkazy swoich dowódców, którzy pozostali lojalni wobec cesarza i nie było do tego celu potrzebne wykorzystywanie jakichś "antagonizmów". Takie zmyślanie jest efektem pewnego szczególnego sposobu postrzegania świata, gdzie po stronie światłości są oświecone i rewolucyjne masy, a po stronie ciemności warstwa rządząca i otumaniona przez nich ciemna tłuszcza.
.Bo kiedy owi pobici na głowę przeniewiercy rzucili pałac i zaczęli pierzchać w stronę pobliskiego lasu, zagrzane przez naszego patriarchę pospólstwo ruszyło za nimi w pościg. Żadne tam czołgi i armaty, przyjacielu, co kto miał pod ręką, bral i szedł w pogoń. Kije, kamienie, dzidy i sztylety, wszystko poszło w ruch. Ludzie ulicy, których dobrotliwy pan tak hojną obdarzał jałmużną, z zaciekłością i nienawiścią wzięli się do rozbijania pomylonych głów tych potwarców i rebeliantów, którzy chcieli zabrać im Boga i zgotować nie wiadomo jakie życie.
To zmyślenie Kapuścińskiego jest wyjątkowo obrzydliwe. Widać tutaj wyzierającą z całego "Cesarza" pychę białego człowieka wobec czarnuchów i Murzynów z Afryki. Z niedobitkami spiskowców rozprawiało się wojsko, a nie podburzona przez patriarchę czarna tłuszcza wyposażona w dzidy i sztylety. Jedyna różnica między gwardią cesarską a regularnym wojskiem polegała tylko na tym, że gwardia nie była wyposażona w ciężki sprzęt bojowy, jak czołgi, samoloty i armaty. Ale nawet bez ciężkiego sprzęty bojowego raczej niepodobna, żeby mogli paść ofiarą "dzid, kamieni i sztyletów".
Trzy, a może pięć tysięcy tych ludzi trafiło do więzienia, a drugie tyle zginęło ku radości hien i szakali, które nawet z dalekich stron ściągały na żer do podmiejskich lasów. A długo jeszcze, całymi nocami, te lasy wyły i chichotały.
W puczu zginęło 174 członków Gwardii, 400 zostało rannych. Zabitych na pewno pochowano, a nie porzucono w lesie na żer hienom. Tak jak w Europie zabitych się nie zostawia w lesie na pożarcie wilkom, tak samo w Afryce się nie zostawia na pożarcie hienom. Jak się wyzbyć pychy białego człowieka wobec Murzynów z Afryki, to ta prosta prawda staje się zrozumiała.
Ale po tygodniu, kiedy siedzieli ukryci w krzakach, od kilku dni już bez jadła i omdlewający z pragnienia, gdyż bali się pojawić w jakiejś wiosce, żeby zdobyć pożywienie i wodę, zostali otoczeni przez chłopów, którzy szli nagonką i chcieli ich pojmać.
Zostali pojmani przez ścigające ich wojsko, a nie chłopów idących z nagonką.
Pośpiechem zawieźli ich do stolicy i wzięli Mengistu do szpitala. O wszystkim doniesiono naszemu panu, co wysłuchawszy powiedział, że chce zobaczyć ciało Germame. Zgodnie z tym poleceniem zwłoki zostały przywiezione do pałacu i rzucone na schody przed wejściem głównym. Wtedy dobrotliwy pan wyszedł z pałacu, stanął i długi czas przyglądał się leżącemu ciału. Milczał wpatrzony bez słowa, ludzie przy nim stojący nie słyszeli, żeby coś powiedział. Potem drgnął i cofnął się z powrotem w głąb budynku, polecając lokajom zamknąć główne drzwi. Widziałem później ciało Germame powieszone na drzewie przed katedrą Świętego Jerzego. Stał tam tłum ludzi, którzy szydzili ze zdrajców. klaskali i wznosili rubaszne okrzyki.
To jakaś konfabulacja Kapuścińskiego. Ani nikt nie rzucał ciała Germama na schody pałacu aby "dobrotliwy pan" mógł sobie na nie popatrzeć, ani nikt nie wywieszał zwłok na drzewie koło katedry ku uciesze tłuszczy. Amharska obyczajowość (podobnie jak żydowska) nakazuje pochowanie zmarłego w ciągu nie dłużej niż 24 godzin od śmierci.
Powiesili go trzydziestego marca, o świcie, na głównym rynku miasta. Razem z nim powiesili sześciu innych oficerów z gwardii.
Na śmierć skazano tylko Mengistu, dwóch oskarżonych z nim oficerów skazano na długoletnie więzienie.
Dalej opowiadają, że nastąpiły tygodnie budzących panikę aresztowań, męczących dochodzeń, brutalnych przesłuchań. panowała niepewność, lęk, ludzie szeptali, plotkowali, wspominali szczegóły zamachu dodając do nich, co kto mógł, na miarę swojej fantazji i odwagi, zresztą dodając pokątnie, gdyż wszelkie dyskutowanie ostatnich wydarzeń było oficjalnie potępione, a policja - z którą nigdy nie należy żartować, nawet jeśli ona sama do tego zachęca, co i tak w tym wypadku nie miało miejsca - pragnąc oczyścić się z zarzutu  spiskowania, stała się bardziej niebezpieczna i wydajna niż zwykle, a nie brakło też chętnych, którzy dodatkowo napędzali komisariatom struchlałej klienteli.
12 stycznia 1961 roku Haile Selassie ogłosił amnestię dla szeregowych i podoficerów Gwardii Cesarskiej, którzy uczestniczyli w spisku, nakazał jednak osądzenie oficerów. 12 marca sąd skazał na śmierć przez powieszenie generała Mangistu, zaś dwóch oficerów skazał na wieloletnie więzienie. Uczestnikami spisku byli tylko członkowie Gwardii Cesarskiej i nie było potrzeby przeprowadzania i wyszukiwania żadnych dodatkowych "przesłuchań i aresztowań".

Cesarz

"Cesarz"
G.O-E.: ..nawet nie wiedzieli o spiskach, bo skąd, skoro dostojny pan zakazał pisania historii Etiopii? Zbyt młodzi i na dalekiej prowincji wychowani, nie mogli wiedzieć, że sam pan nasz doszedł do władzy dzięki spiskowi, kiedy w roku tysiąc dziewięćset szesnastym z pomocą ambasad zachodnich dokonał zamachu stanu i usunął legalnego następcę tronu lydża Ijasu.
Jest zmyśleniem Kapuścińskiego, że Haile Selassie miałby zakazywać "pisania historii Etiopii".
Przyczyny i okoliczności odsunięcia od władzy wskazanego przez Menelika II następcy tronu Lija Iyasu  można znaleźć pod hasłami w Wikipedii: Haile_Selassie_I oraz Iyasu V of Ethiopia. Opisane jest to także w "Historii Etiopii" (strona 342, rozdział "Zamach stanu"). Nietrudno zauważyć, że to co przekazuje Kapuściński ustami anonimowego "człowieka dworu" raczej ma niewielki związek z tym, co jest opisane w podanych źródłach. Zadne z tych źródeł nie wskazuje na aktywny udział przyszłego cesarza w tych wydarzeniach. Jest to co najwyżej relacja stronnicza i skrajnie niechętna Haile Selassiemu. Podkreślenie "z pomocą ambasad zachodnich" raczej jednoznacznie wskazuje jakie jest pochodzenie tej relacji. Osoby, które wychowały się pod rządami komunistycznymi doskonale pamiętają tę obsesję na punkcie "ambasad zachodnich" czy "mocarstw zachodnich".
Jest to niepodobne, aby "człowiek dworu" przekazywał Kapuścińskiemu informacje całkowicie nieprawdziwe albo przedstawiające jednostronną i skrajnie niechętną cesarzowi wersję wydarzeń z 1916 roku.

sobota, 19 czerwca 2010

Byliśmy na koncerce

29 maja 2010 byliśmy na koncercie z cyklu Międzynarodowy Festiwal Muzyki Sakralnej  "Flet i organy w dawnej Europie" (Kościół św. Antoniego, ul. Senatorska 31). Podobało nam się bardzo.
Flet i organy to bardzo interesujące zestawienie, zarówno gdy grają solo, jak i w duecie, a szczególnie gdy wykonawcami są doskonali muzycy. Barokowy wystrój kościoła wcale nie narzucał muzyki w jednej tylko estetyce. Słuchaliśmy muzyki z różnych okresów - baroku, romantyzmu oraz impresjonizmu (Debussy), kompozytorów sławnych jak Vivaldi (w transkrypcji Bacha, bardziej znanej od oryginału), Handla oraz Debussiego, a także mniej w Polsce znanych (program).
Na bis muzycy wykonali między innymi znany motyw muzyczny z filmu "Misja".