Ingredienser: 1 stk virkelighed

Den hellige gral i programmering, er en ikke-endelig samling af test-cases der effektivt sikrer at man ikke begår den samme dumhed igen.

Som enhver ved kan det betale sig at skrive en "test-driver" der kan tumle programmet igennem de opsamlede test-cases og som alle der er nået dertil ved, så bliver "it passes all the tests" let til en sovepude.

Når en varnish bruger der leverer over 1000 objekter i sekundet hele døgnget og har spidsbelastninger langt over det, rapporterer en fejl som "vi ser et par gange om ugen." så mindes jeg med længsel den gang en høstak var noget jeg stablede, uden at tænke over antallet af nåle den måtte indeholde.

Det er nu lykkedes mig at gennemskue endnu en obskur fejl.

Denne gang kræver det en HTTP client bag en langsom & snæver forbindelse, dvs. en iPhone i USA og et HTML dokument indenfor et nærmere bestemt, men operativsystem og kernetuning-afhængigt numerisk interval.

Jeg har også hvad jeg tror er en løsning.

Spørgsmålet er om det er en test-case værd ?

Og hvis det er, er det en portabel test-case værd ?

Jeg kan godt skrive en test-case der virker på min laptop, jeg ved kernen har DUMMYNET og at der ingen firewall regler er under normale omstændigheder, så det er relativt nemt at simulere in AT&T ramt iPhone.

Men at skrive det som en generel test-case, der også vil virke under Linux og Solaris er en ikke triviel øvelse, for guderne vide hvilke faciliteter der er til rådighed for at simulere syntetiske net.

Det nemmeste ville sikkert være at injicere pakker med pcap/tcpdump, det er rimeligt portabelt, men det ville stadig kræve at man gennemskuede et antal kerne-parametre for TCP buffer/windows/rtt, noget der ikke findes et anvendeligt API for[1].

På den anden side, hvis man tog sig tiden, ville man have et værktøj der kunne simulere de mest abnorme klienter helt ned på TCP-bug niveau, men helt ærligt: jeg er ikke i TCP branchen med Varnish, jeg er i HTTP branchen.

Man kunne selvfølgelig lave en stokastisk test, der skulle køre N gange med forskellige parametre før man var tilfreds, men så ender man med at et test-run tager en måned.

En gang imellem overvejer jeg seriøst et start et gratis porno-site: Masser af forskellige klienter, objekter af alle mulige størrelser og alt den trafik jeg har lyst til at have for at teste Varnish.

phk

[1] Har jeg nævnt før, at POSIX sover i timen ?

Kommentarer (14)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#2 Poul-Henning Kamp Blogger

Nej, problemet er at selvom du har lavet en write(2) på en socket, så er der ingen måde hvorpå du kan vide om du faktisk har sendt og modtaget ack' på dine data.

Hvis du starter et kort session-timeout umiddelbart efter write(2) returnerer risikerer du at det terminerer sessionen inden data er blevet sendt, hvis klienten er lang tid om at få snøvlet sig sammen.

Poul-Henning

  • 0
  • 0
#4 Flemming Frandsen

Jeg ved godt at den fejl ikke har med Slow loris at gøre, men tillad lige et OT spørgsmål:

Varnish har en tråd pr. request, ikke?

Hvad sker der når nogen laver et Slow loris angreb, får de bare 60k tråde som intet laver inden man løber tør for tråde?

  • 0
  • 0
#5 Erik Cederstrand

Jeg er klar over, at det formentlig ikke vill have hjulpet PHK, men jeg faldt for noget tid siden over et sideprojekt til LLVM, som hedder KLEE (http://klee.llvm.org). Det kører ens program igennem med symbolske værdier for alle variable og finder automatisk et sæt af testcases, som sørger for at alle programlinjer eksekveres. Slut med at skrive testcases manuelt! Jeg synes idéen er rimelig genial, men jeg har ikke prøvet KLEE i praksis. Er der andre her, som har leget med det?

  • 0
  • 0
#6 Poul-Henning Kamp Blogger

Hvad sker der når nogen laver et Slow loris angreb, får de bare 60k tråde som intet laver inden man løber tør for tråde?

Varnish allokerer først en tråd fra puljen når hele requesten er modtaget.

Hvis requesten bliver for stor lukker vi bare forbindelsen.

Poul-Henning

  • 0
  • 0
#8 Martin Zacho

En gang imellem overvejer jeg seriøst et start et gratis porno-site: Masser af forskellige klienter, objekter af alle mulige størrelser og alt den trafik jeg har lyst til at have for at teste Varnish.

Det ville kun kunne ske hvis du selv er ejer ;-) Kan lige se hvordan det ville gå hvis jeg kom med en sådan anmodning ;-)

Martin.

  • 0
  • 0
#12 Allan Ebdrup Blogger

Jeg har været udsat for at en ActiveX ikke virkede korrekt når brugerne havde en speciel screen saver i winXP. Eller en ActiveX der fejlede hvis brugeren havde opgraderet fra IE6 til IE8 (IE7 til IE8 og en ren installation af IE8 virkede fint). Nogle gange er IT bare dejligt, det er ihvertfald sikkert at der er arbejde til os IT-folk i mange år endnu.

  • 0
  • 0
#13 Martin Juhl Jørgensen

En gang imellem overvejer jeg seriøst et start et gratis porno-site: Masser af forskellige klienter, objekter af alle mulige størrelser og alt den trafik jeg har lyst til at have for at teste Varnish.

Det er jo faktisk ikke en helt dum idé, det svarer vel til Google eller Facebook der stiller en gratis service til rådighed og så høster informationerne -- en gennemprøvet strategi der virker!

Desuden kunne reklameindtægterne gå lidt til dit firma og lidt støtte open-source projekter. (donerer porno-industrien mange penge til open-source?)

  • 0
  • 0
#14 Erik Cederstrand

det svarer vel til Google eller Facebook der stiller en gratis service til rådighed og så høster informationerne

Hvis det skal være helt i tidens ånd, skal brugerne vel selv generere indholdet, og dele det under Creative Commons - eller måske en BSD licens: "Copyright (c) 2009, Bettina Jørgensen. Du må gøre som du har lyst, undtagen at påstå at det er dig på billedet". :-)

  • 0
  • 0
Log ind eller Opret konto for at kommentere