Giter Site home page Giter Site logo

Comments (2)

ninewise avatar ninewise commented on June 4, 2024

Als je parallelle uitvoering of "toekomstige testen" wilt ondersteunen, zou het beter zijn om van uitvoerformaat te wisselen naar de complete uitvoer in plaats van de partiële uitvoer. Het hele idee van de partiële uitvoer is om het sequentieel uitvoeren van testen eenvoudig te maken voor de judge, zodat je geen rekening moet houden met tijds- en geheugenlimieten.

Zodra je parallelle testen wilt uitvoeren, is het niet meer mogelijk om je test te openen wanneer die begint en te sluiten wanneer die eindigt - er zouden verschillende testen door elkaar lopen. De test pas openen en onmiddelijk sluiten als de uitvoering gedaan is, zou mogelijk zijn, maar als je judge dan stopgezet wordt door Dodona, zal deze test nog niet aangekondigd zijn en kan de result_constructor dus geen 'testgeval met timeout' tonen. Voor parallelle executie heb je dus ook 'toekomstige testen' nodig: dan kan je bij het starten van parallelle executie deze testen tegelijk aankondigen en dan later laten invullen.

Om toekomstige testen te kunnen implementeren, zou je identifiers moeten toevoegen aan de channels/tests/testcases/... Dan kan je eerst een test aankondigen met een identifier, en dan later, wanneer deze effectief uitvoert, naar die eerdere aankondiging verwijzen met dezelfde identifier.

Zo'n implementatie vereist echter bookkeeping van de testen binnen de judge. Het is mogelijk dit optioneel te maken (startende testen zonder identifier worden beschouwd als nieuwe) en dan moeten bestaande judges niet gewijzigd worden. Als je echter toch je testen zal bookkeepen in je judge, kan je evengoed de complete uitvoer gebruiken (wat gewoon een JSON-serialisatie van de status van je testen is als je die toch bijhoudt) en moet de result_constructor niet complexer gemaakt worden.

from universal-judge.

niknetniko avatar niknetniko commented on June 4, 2024

Bedankt voor de gedetailleerde uitleg.

Het idee van het op voorhand aankondigen van de channels/tests/testcases enz. heb ik nu binnen de judge gedaan voor de timeouts. Toch heb ik ervoor gekozen om het partiële formaat te behouden, omdat er dan nog steeds minder werk is bij de judge, zoals het propageren van de status of de "accepted".


Het in parallel uitvoeren heb ik (voorlopig) verwijderd (zie #41).

from universal-judge.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.