-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Test metadata #38
Test metadata #38
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(summarizing discussion on Slack)
Agree on this approach and on https://github.com/crs4/life_monitor/wiki/Workflow-Testing-RO-Crate
My main two requests:
-
#planemo
in one RO-Crate is not the same as in another crate, where they may have different versions etc. Yet the test engine has to somehow recognize that it is the "Planemo binding code" it needs to run, from some hardcoding. Would we also need a@type
in the RO Terms with a corresponding "Supported test engines" table in the wiki page, say https://w3id.org/ro/terms/test#PlanemoEngine ? -
Use of
hasPart
with a contextual non-File entity in aDataset
(#hash
identifier) can be confusing as people would expect files. It is not breaking RO-Crate spec as such - just confusing. Perhaps usementions
at root Dataset level and/orabout
attest/
Dataset.
Also:
If there are multiple tests/workflows - how would the engine pick the correct workflow file? Add another mainEntity
link from the TestSuite
so we know the whole suite is about that particular workflow. (or can a suite cover multiple workflows? Move to TestInstance
)
Thanks for the feedback @stain. I've added 4113169 and da0d78f to address the second and third change you requested. The first one is more complicated. The idea here was that the higher application layer (e.g., Life Monitor) would know what to do with the test definition based on the engine's Since the above change requires a pass through RO-Terms, if you are ok with the other changes I made, I propose you merge this PR now, then we can sort out the other bit separately. |
Update I pushed a new commit (99b8198) where I use two new properties, - assert suite.definition.engine.id == "#planemo"
+ assert suite.definition.engine.testEngineType == "planemo" In this way there's no need to create a separate type for each supported service or engine, so the test namespace does not have to be updated every time a new supported service or engine is added. The spec will just have to list the supported types, specifying the appropriate values for the above properties. I had to add a new @stain please let me know if this looks good to you now. If so, we can merge the PR and I can update the test namespace in ro-terms to reflect these changes. |
Well, I would prefer to have global identifiers for identifiers.. by having your own property to shortcodes you are delegating to another non-URI registry (the wiki page?) or it has to be explicitly freehand, e.g. permit "Galaxy", "galaxy" and "Galaxy Project". It's good to be clear which of these two routes it is. http://schema.org/engineType for instance seems to permit both "petrol" and "gasoline" and "1580cc" - it is purely a text field, although it can also go to controlled vocabularies as well as to somewhat ordered QualitativeValue. Flexible but not predictable! So in that sense the new suggestion achieves less than the old I can see the reason to use We tried to make RO Terms be a CSV file so it is easy to update.. If it's not suitable as a registry, then we perhaps need an even easier approach, like a GitHub wiki page with So how about: {
"@id": "test/test1/my-test.yml",
"@type": [
"File",
"TestDefinition"
],
"conformsTo": {"@id": "#planemo"}
},
{ "@id": "#planemo",
"@type": "SoftwareApplication",
"testEngineType": {"@id": "https://w3id.org/ro/terms/engine#planemo"},
"name": "Planemo",
"url": {"@id": "https://github.com/galaxyproject/planemo"},
"version": ">=0.70"
} and then that permalink takes you to a GitHub wiki page which just lists each engine like you already suggested. Note that there are no pull requests on GitHub wikis, if you permit a group (e.g. public) editing it will just be editable. It is revision tracked though. (Why is From this I wonder why we need |
I had moved the engine type to its own property to support the use case where different tests in the same crate might need different versions of the same engine, so that the crate author could do something like: {
"@id": "#engine1",
"testEngineType": "planemo",
"version": "0.70",
...
},
{
"@id": "#engine2",
"testEngineType": "planemo",
"version": "0.72",
...
} I think we can still get rid of {
"@id": "test/test1/my-test.yml",
"@type": ["File", "TestDefinition"],
"conformsTo": {"@id": "https://w3id.org/ro/terms/engine#planemo"},
"engineVersion": ">=0.70"
},
{
"@id": "https://w3id.org/ro/terms/engine#planemo",
"@type": "SoftwareApplication",
"name": "Planemo",
"url": {"@id": "https://github.com/galaxyproject/planemo"},
} Regarding the registry, I did not mean to imply that ro-terms is unsuitable. After reading your considerations, now I see that something would have to be updated anyway, whether it's the current CSV or a new setup based on subheadings. So it's better to go with the former since it's already in place, and integrate your original proposal of a Taking all of the above into account, the new test instances and definitions look like this: {
"@id": "#test1_1",
"name": "Test 1 Instance 1",
"@type": "TestInstance",
"runsOn": {"@id": "https://w3id.org/ro/terms/test#JenkinsService"},
"url": "https://example.org/jenkins",
"resource": "job/tests/"
},
{
"@id": "#test1_2",
"name": "Test 1 Instance 2",
"@type": "TestInstance",
"runsOn": {"@id": "https://w3id.org/ro/terms/test#JenkinsService"},
"url": "https://jenkins.example.com",
"resource": "job/wftests/"
},
{
"@id": "https://w3id.org/ro/terms/test#JenkinsService",
"@type": "TestService",
"name": "Jenkins",
"url": {"@id": "https://www.jenkins.io"}
}
{
"@id": "test/test1/my-test.yml",
"@type": ["File", "TestDefinition"],
"conformsTo": {"@id": "https://w3id.org/ro/terms/test#PlanemoEngine"},
"engineVersion": "0.70"
},
{
"@id": "test/test2/my-test.yml",
"@type": ["File", "TestDefinition"],
"conformsTo": {"@id": "https://w3id.org/ro/terms/test#PlanemoEngine"},
"engineVersion": "0.72"
},
{
"@id": "https://w3id.org/ro/terms/test#PlanemoEngine",
"@type": "SoftwareApplication",
"name": "Planemo",
"url": {"@id": "https://github.com/galaxyproject/planemo"}
} The full set of changes to this PR is in f23f6b8. Here is the corresponding update for the test namespace in ro-terms: ResearchObject/ro-terms#4. How does this look? One last note: at this point, the engine entity does not offer much added value, since it's just hardwired to be always the same thing for any given engine type. |
I like this simplified approach. RO-Crate philosophy is to documented in I am concerned if |
Yes, it means "runsOnSomethingOfThisType". |
This PR adds support for a test-oriented extension of Workflow RO-Crates called Workflow Testing RO-Crate, based on the "test" namespace recently added to RO-Terms.
It includes:
This PR is meant to complement the new Workflow Testing RO-Crate spec with a concrete implementation and runnable tests and examples. Feedback on both this PR and the spec would be very useful. I've opened an issue on the Life Monitor repo for Feedback on the spec.