GithubHelp home page GithubHelp logo

Comments (6)

rvansa avatar rvansa commented on August 11, 2024

So, I think each upload of run that is not parsed into repo-native structure should consist of (test, schema, data-matching-the-schema). For each allowed schema the test will define bunch of jsonpath-ish transformations that will select these generic arguments + view. Ofc the schema will be validated here as well.

from horreum.

willr3 avatar willr3 commented on August 11, 2024

@rvansa I don't think I understand what you mean by

consist of (test, schema, data-matching-the-schema)

Right now RunService.addRunFromData is exposed as POST /run/data and accepts 3 query params (start, stop, test) in addition to the json post body. The query params can be either jsonpath (starting with $.) or string literals that are parsed into the expected format (e.g. parsing an ISO data string or treating test as the ID or name of an existing test)
There is also RunService.addHyperfoilRun exposed as POST /run/hyperfoil which is the same as using /run/data with start=$.info.startTime stop=$.info.terminateTime and test=$.info.benchmark
In both cases, a new test will be created if the test query parameter does not find an existing test definition.
Do you think we should create a new test definitions based on $.info.benchmark by default?
Do you think the uploaded json to /run/hyperfoil should first get validated against the most recent hyperfoil json-schema?

from horreum.

rvansa avatar rvansa commented on August 11, 2024

Right now RunService.addRunFromData is exposed as POST /run/data and accepts 3 query params (start, stop, test) in addition to the json post body. The query params can be either jsonpath (starting with $.) or string literals that are parsed into the expected format (e.g. parsing an ISO data string or treating test as the ID or name of an existing test)
There is also RunService.addHyperfoilRun exposed as POST /run/hyperfoil which is the same as using /run/data with start=$.info.startTime stop=$.info.terminateTime and test=$.info.benchmark
In both cases, a new test will be created if the test query parameter does not find an existing test definition.

Okay, I have assumed that tests should be defined first and the upload should fail if it's not, as a precaution to mistyping the test name. I grok that not requiring to create it is convenient, though. This workflow just says that the json -> view transformation can come later. That also means that schema is optional in the sense of using some __any schema if there is no query param nor $schema key in the input.

I am not very fond of the addHyperfoilRun endpoint; Ideally I would keep the transformation as data rather than hardcoding it. If a run comes declaring schema belonging to Hyperfoil, it decide based on that.

Do you think we should create a new test definitions based on $.info.benchmark by default?

You've convinced me; yes. In my eyes that makes schemas the first-level citizen, storing any transformation for schema only, not for (test, schema) tuple.

Do you think the uploaded json to /run/hyperfoil should first get validated against the most recent hyperfoil json-schema?

Note that the Hyperfoil schema is for benchmark; all.json schema is yet to come. If a benchmark declares schema that's unknown to repo, it can't validate it but I don't think it has to refuse the upload. There should be exclamation marks in the UI, though.

from horreum.

rvansa avatar rvansa commented on August 11, 2024

I've just noticed that view is defined in Test table; I though that view is a cached excerpt from full Run's data - does it have a different purpose than I thought?

from horreum.

rvansa avatar rvansa commented on August 11, 2024

Oh gosh there's javascript in the DB! I found the tab...

from horreum.

rvansa avatar rvansa commented on August 11, 2024

I think this is done. Schema entity now defines the paths to fetch those parameters from the JSON.

from horreum.

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.