 So welcome everyone to the TMT workshop for nested federal 2020. I'm not hosting this workshop alone We will be tree here to support you and help you out and and go through the workshop Petr Splichal will be doing the main session. He will be going through basically all the prepared prepared material that we have to do examples I with Pavel will be supporting you via chat or directly on the call and Yeah, as I said, please connect with audio video if you can so we can interact with each other and we want this to be interactive We want to gather your feedback from the workshop from the TMT tool the main Document the main no, we don't have any presentation prepared. We have just this This document here that we are trying to now share with you and we'll be gathering the feedback here We have official document official documentation on the Federa dog stage Under TMT. Here is a link. I'm sharing it also in the chat and we will be basically going through this document together Like better will be doing that. Yes. Okay. I think I'm ended on the rock. Hello. Hello Hope you can hear us. I can't can you hear me? Yes. Yes, we can I can we can I can hear you all of you Thanks for connecting. Okay I'm I can't see who is who is on the if anybody has idea how to see who is else here But seems that since that nobody else because nobody else asked for moderation Okay Better left for a second Okay, I Think we can start better. So I guess the floor Guys just stop the workshop. We can try to like look at some details what you are interested in don't feel doing Don't don't be shy to interrupt Yeah, thanks, Pavel. You should have the document there If you have also some notes, you can write it directly in the Google document that Pavel Valena now shared the last comment on the chat and Also, you can use this chat anywhere you like. Okay, so that's it better. I the floor is yours Okay, thanks So we thought that the best the best way how to do the workshop would be would be with some real real document So that that's why we we have prepared Something like a quick start guide and we've updated the Fedora CI documentation, which is related to TMT and the page Pages this one So unless you yeah, middle order share share it. So yeah, yeah, so that's that's the one that's Fedora project CI slash slash TMT and So we will be we will be following this this document and we can use use it as also To verify basically whether the documentation works as it as it should work So if there is anything missing, we can we can fulfill the gaps and and see So if you any anytime you see anything which is not clear or always confusing, please, please let us know and So I guess we could we could start with the first steps So mirror you are showing me maybe I would be I would be showing showing the Details so I I'll share my screen Hopefully you can see it And so let's let's see. So that's the page for the test management tools Just some interaction for the summary and the section first steps contains the very first step. So I Would recommend all of you to choose to install install TMT If you want to do some only some basic basic examples, you can you can install the like the core package This is just a TMT If you would like to try everything which is so far implemented and available You can try the TMT minus all which which has all the dependencies and all which brings all sub packages Or if you want just to experiment with the container or virtual so you can you can choose choose some of these options so Please give it a try and let us know if it If you are able to install it successfully no problem with dependencies or anything else Is everybody You first I wanted to ask everybody running Fedora or some other operating system So we know because of course the workshop is yeah The DNF install is on Fedora also CentOS 8 So just curious what Linux are running Fedora also Great also, if you show your screen like we can help you if you encounter some trouble Thank you. Okay So so far so good no problems with installation everything looks fine. Yeah, there's only 305 packages I have a question by the way before starting I also must I install a virtual Virtualization and container when I install all it's also installing a background and be back other stuff like that What is the requirement of the Ruby? I don't understand that part if there's any inside information I would like to know about it. Why is it required? That's I just want to know about it. I Think in the current setup the vagrant should not be in the dependencies Is there yeah, I can I can actually show you on my screen I Currently it shouldn't be there, but Previously it was there because vagrant is used for virtualization in in vagrant plug-in, which is currently not included But in the future, I think we could include it again. Yeah Basically, you can type Dash X and they grant or dash X Ruby with the installation at it will omit the packages and you'll cut off the whole tree so you can select even if the Requirements yeah, I just I just went around to correct it because when I saw vagrants vbox and Other stuff, but I didn't understand the part of the what's the requirement of the Ruby I know I know the Python packages. What's why is it there? I'm almost all of them. I'm not a master Ruby guy So that's why I just would like to know about it. So thank you so much It seems we have so far the in the spec we have forgotten recommends vagrant Because of that old plug-in which which is not available currently But yeah, so Instead of installing the all you can turn off the optional dependencies or just install the Two sub packages I mentioned So it's possible like to do just the tmp provision container and virtual and that that should be definitely less dependencies Yeah, yeah, yeah, of course. Thank you Good point. Thanks. Thanks for pointing that That's why we have the workshop I Okay, so great So otherwise if the installation is okay, if not, please shout And now now you have a choice. So what currently works? so Timothy is definitely available for experimenting and Trying the stuff on your laptop But it is also possible to to check the testing or experiment with the testing for the for the poor requests and What we have currently working is integration with packet and github So if you have any projects on github, you might prefer to clone or to just enter some of your repository of your project and play there and This would this would allow you not only to experiment locally But also to to create a poor request and then check how packet how packet works with that Otherwise and in the future we also We also want to Enable this federal CIA in the federal CIA So that should be available also for the for the RPMs namespace for the for the packages for the federal packages as well So I guess this is nothing nothing more to be to be said here and We can we can start with some very first experiment With the with the smoke test actually what I was showing on the talk yesterday so you could you could do something like this so enter your project and and call their TMT in it with minus minus template mini and And this is this is this is a way how how how the stuff is initialized and the base the base the base plan is created and you would see also that There is one additional special and directory created which is called dot FMF And this is this is something similar like don't get it marks the root of the metadata tree So so that's that's what the TMT in it does if you call it without template It just marks the it just marks the root of the tree But if you if use the template, okay, you can directly start with playing you have this simple simple scout on So here the content of the of the plan is Summary and execute and the execute step basically defines the the script Which would be which would be run when the test is when the test is run So I could I could follow maybe maybe you in the same way and do it once again What we had yesterday so I Just create I Just create Empty directory don't have any project here now and I run TMT in it Minus minus template or minus these shorter and the mini so this should create It says it initializes the tree. So it means here the TM The path in is initialized as the root of the tree It applies applies the template and you you you see that there is a directory and there's a template and here if you have Your application and it has some something. I don't know bash minus minus version or something like that you can you can Just make a super simple smoke test here as as the first thing as the first thing to experiment with I I Have a tiny question When we try to use Command line dash dash dash version. I was also wondering forget to ask about it So I wouldn't understand if that path test or fail there So it has to just need to know this command is exist And what what if I do a bash just one minus and just type the wrong argument But comment is there is it still going to pass or fail because if you just show the help menu James is gonna think this comment is exist. I was just gonna show me the results. So is it affecting the test or It's just going to be fail it Because the command is fail it Yeah, so so the the command like the the decision whether like the test passed or failed is Is done based on the exit code from the command so if if like if the command is not found I think it should be reported an error and If you're interested like for the exit codes You can do not one TMT to see the manual and there is a section which describes the different exit codes which we have and So from the TMT itself zero means that everything went well At least one test passed. So there was something and there was no fail. No error one means that there was fail and If you've got two it means that there are some some errors. So in this case, I think If you place there a command which doesn't exist It would it should give you an error if it successfully finishes it Returns zero and it's it's handled as a pass and otherwise it's handled as a as a fail Okay, thank you Okay, so so actually, let's let's try it here I want to make it a little bit faster. So this is very very simple smoke test Let's say we will be running in container So provision container by my default related Federa. So if I If I run it and like this it would be TMT help TMT Minus verbose maybe So here you see it takes the container it takes the Federa and it it pastes I have a modified container so that I have a TMT install there. So it breaks. But if there was something Wrongs some non-existent command You would see that there there is just it reports an error. So you see error Also, as I mentioned yesterday minus V mouth can be applied multiple times So in order to see more details You could do this and here you can also see like the Problem, what was the problem like no such far direct directory? And if we This falls I was running false It should report a failing test false not as a boolean for YAML, but as a string So this this should run the false and it says one test failed Yeah So it means in the predator predator code is one it is failed other agaton codes are recognized as errors if I understand Yes, yes, mm-hmm, and we so far we we support like like this simple shell scripts Or another way is to execute tests as beaker lip. I'm not sure whether you does any one of you met beaker lip Is it no No, no, so it's a shell testing library Which which we are using heavily in the red hat and because we have many tests written in that We want to support that out of the box So and and the beaker lip test I will give some example a little bit later It reports like the errors in a in a journal and then the journal is is checked for for the for the result So it it does not only take the exit code, but it It checks also in the journal But the curlyp is not mandatory you can write shell test as well. Yes, both both both are possible Yeah, and I would just add that these are all basically some kind of modules to TMT So or plugins so it is possible to extend in the future also TMT with other test frameworks in case somebody would be interested just So what about the smoke test does it work for you very able to run in a container or in a VM I was trying to running in container. I'm getting some permission or because I run it wrongly in Roots, I just changed it to user mode So I'm trying to be there is some command line issue. I don't know yet So I'm just checking out Let me just check it one more time if I can find the error I will just show my screen and get some tiny help Because I would like to do some extend the test as well on my own other Python project I would like to know so we can extend it over on it. So let me just check it out again Okay, okay I'm running it on a toolbox. So I think it wouldn't work because probably tries to run a virtual machine So it wouldn't work within the toolbox. I guess. Yeah, I believe to make it fast It is basically provision of container I believe so because downloading a container is faster than the virtual machine because virtual machines require 10 gigs stuff I'm creating and by provision stuff and any polling Yes, yes Experimenting with container is much much more faster. So If you can I see the container thing you start to write around just tiny examples, it's just possible Thank you. Let me just take it one more time. Did any error I made it That's exactly what I did. I'm I'm sharing my screen now. So you can see how I did run the test In container Yeah, let me just let me take you Okay, I just sit down. That's true Is there any Escape character issue like intent issue or is it free like some yaml file some Files and some Intentation problem like Python. Is it the same rules that lie in here? I think yaml does not allow the tabs. So it must be spaces if No, no, what about this f m p for this tm t is which one? Uh, sorry, I'm not sure about the question what Let me just throw the error them. I think that's gonna be easier Express it. Yeah, it's a yaml syntax. Yeah, I think yeah Uh, how can I share my screen? Think I cannot share my screen or I don't know how it's done It's on the bottom at the bottom. There is a icon. Oh, yeah, yeah, yeah, sorry. Sorry. No, dummy me. Thank you Mm-hmm This is this error. I'm getting on. This is the basic stuff I wrote. So is it tab error? I believe so Uh Okay, yaml syntax fail to parse. Yeah, that's the tab tab Yeah, yeah, yeah, let me just uh, find the list in my own uh part yet Mm-hmm When you're debugging you can you can run it on command line as well. Uh, everything that's in, uh, the f mf files has an Command line alternative so you can do both Yeah, yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. I just want to know the think I should try to be understanding Different or yaml. So that's why I would like to know some things Um So if you also also if you need any any time like for one of those steps, yeah, yeah, when I just You are not sure about the syntax Uh, I'm just pasting in the chat the tmp run provision minus minus how container minus minus help It does not show only the options available But but at the top of the help there is usually or I believe it's not uh, almost every time There's an example of the config. So, uh, when you are not sure about like how the how the step Can be configured in the plan you can you can use this this one to get an example That should be useful um I would just like to add to stephanos if you are stephano if you are doing Running federal toolbox. I guess that is already a container. So if you are running tmp directly in that container, I would Yeah, I think you will need to learn it in local provisioner. So we have a local provisioner that runs Stuff on your local host So if you are already in toolbox, what is the container you count on container in container? I guess and also no vm in that in toolbox. So I guess the how local is what you want so you can try that if you if you don't want to uh, run Like In toolbox, uh, because it shares your home folders, etc. You can also use our Containers we have created containers with the empty so you can run directly the container with shared Yeah in podman You you can uh, I use those containers. Let's let me share those We have containers with bundled tmp. So instead of instead of installing tmp on your local host You can run basically that container. Yeah, it's just I'm using silver blue. So I don't want to overlay The old tmp on top or the containers, you know, it's better if I get the container to run with podman We can add Or just, uh, you know one line by or just comma comma comma What was the question? Uh, no, I was just wondering any when you type when we add package Under the provision we can say just comma or one package, uh per per line Ah, so as it should be a list a list of packages and the list in the ammo is written as Square bracket and then separated by commas. I think Or you can make a like bullet list like like a bullet list. So yeah, same rule applies. Thank you. Thank you. Thank you Sure Okay, thank you father Um, I may have a question. I have a question Basically the issue I'm I'm facing right now is that when I have for example, I'm using tmt in packet as far as I understand it it will install the Library or the project in the machine Which will run the test And then I can do the smoke test without any switching to python power anything My question is am I able to do this somehow? Easily with the tmt directly or should I create Other plan for the for the packet configuration than for my local testing Because my smoke test is basically python 3 minus c import my library It's basically my my smoke test and to be able to do this. I have to Set python path or better tested on installed system Which mean I have to like install it to the container. I can do that in a pre-preface. That's not the problem But uh, when I'm using packet it will do this For me automatically as far as I may as I can tell Maybe I'm wrong in this. Yeah, so am I able to create the plan the same way? It would one plan for both solutions or I have to create one plan for packet Which will use the installed system installed solution and second plan for with the python path Which will use my source code Like I currently the the most feasible thing I see is have a plan without the installation of the package And then when you run locally on your machine You add that prepare plugin directly on the command line that installs your package So that seems like a for me a feasible solution because I currently impact it Basically, we execute all plans that are available there So you can't even currently select which plan would you like to run? So we don't have that possibility there This is it's possible you disable some plan because uh, there is a attribute called uh called artifact And you can you can say that you don't want to run this plan for poor Forgot about that. Okay. Uh, that's that's something. Uh, we are we are using uh for some of the plans because The packet integration is done. We are cruncher, which is a little bit Different than tmt. So there are some some some features are there a bit different But we are heading like to have Completely even in the with the packet integration So the tmt would be around there. So uh, you would have completely the same experience And you would not uh, you would not have to think about like whether Or do it in a different way on your laptop We we are heading to towards to have like the very same experience And even in the ci so the tests are run in the same way and if there is a problem so that you can Easily reproduce locally with the same config ideally But the problem will stay still the same like in in these terms because like a packet builds a copper build a custom copper build that Basically packet like has information about it, which which copper was it so he still can't create Like a generic kind of fmf which will install some copper build right the copper build still still need to be installed somehow Like from from that system that is like executing those fmf tests for packet right so for the for the local testing i don't want to uh Basically do the copper build or use the copper build because it will be a lot slower And you need to make it fast. So so i'm thinking more about just uh set up by install Or something like that just to directly install to the container When it will be container not a system You can install the copper build. So if you have copper build set up in your repo, uh And or for your pull requests you can like type uh repair uh How install And then the copper repo, right? Yeah, I I saw that that's great great thing One one know the world is it could be interesting to have be to have An ability to give a custom repo in general Because for for our tests, we are using for anaconda. We basically have Full-back repository because from time to time there's some dependency which we can we can't really uh Switch easily so we will basically replace this dependency by other repository. So maybe it could be in problem for future Yeah, yeah, good idea. So so, uh, the idea is to have a ability to select just custom, uh, whatever whatever arbitrary repository to fetch packages from It could be just just a link HTTP link for the repository Shall give their priority Are you can always use ansible, right? That's true. That's true. Yeah, if there's a complex thing you want to do. Yeah, it's kind of Good point. Thanks I have another question. Uh, I know we can use Ansible this so much other possibilities or we can use pod one itself to do this a possibility But I would like to know this if it is possible Can we send our files or project files into the tmt? Uh, like there is some command line. We know we all know about it probably Send files into the container or the virtual machine Can we do this with tmt? Is there any specific command for that in or any? How do I say it's picked in in tmt file any specification for this or we can just use other Ansible, darker, whatever we way we're using it or pod one So if you if you need some files from from your repository the way how it works Uh, it's that For each round there is a there is a created the temporary directory with all the data which are which are necessary And there you can then you can there you can Find everything Also from from the repository Whereas the metadata tree. So if you need any file from the from that From that location, it's always present and always available Uh, it's in the case of container. It's volume mounted. So it's available directly and on If it's a virtual machine then you have the files there Already already present You should be able to access them So in container we have a volume method which is we use it already and access it directly and also put extra files If this is necessary so tmt will handle that for me And virtual in other ways is the other ways basically so okay cool So in container it's basically doing what I want to do automatically sending files present it and just change it if it is necessary Cool. Cool. Cool. Thank you so much Yeah, basically the discover step is is used to prepare everything for the testing so discover tests Uh, do find out find out what will be run to fetch test fetch fetch remote repositories locally And when when it's ready then make sure Uh, or we have we have a method for for the provision to make sure that the files Which are in the in the around directory that they are synchronized the guests to the system of the test So either when you mount it or copy it So anything which you prepare or discover during the discover step should be should be ready Okay, so, uh Basically put the files over there if it is like virtual network mount or something in podman already discover as you can Describe it. Okay. Cool. Thank you. Thank you so much. Uh, do we uh And I was checking the github repository for example part and also checking the man file for this scenario. Is there any Pre-defined example is exist or should I make it myself? Uh, maybe it's gonna be a good I mean if it is there It's gonna be a good study. This is not no problem. I can find myself and try to be tinkering and learn it Will be will be better too as well Uh, I'm thinking, uh, basically I can let's share my screen again. Thank you If I go In the plans directory of tmp, there are some some examples and you can for example the helps plan is something Uh, he uh, basically this this shows uh, how how you can also like Define the tests only in the plan and for example here on this third test Uh, this is uh cold help smoke It it resides in this directory on the test. There is a directory shell And in that in the directory there's there's the test. So, uh, here you see you don't need to do anything Basically, but uh, the test will be run on the on the on the guest and all the files would be it should be available available Awesome. Thank you I'm I'm looking into Inter documentation online and on the artifacts. There's a status idea So maybe if it's already That's the reason why I thought it's not already it's not implemented yet. So Yeah, it should be documented better because it's a variable. So if you look at the tmp tmp around, uh Prepare the help and it should be there Prepare how he is how minus minus help. Yeah So that is a little what is available. We have a command line, but uh, the artifact the artifact part in the in the spec I see It's in the plans And it's I think Yeah The thing is that cruncher supports this already because we we we wanted to disable some of the Some of the variables some of the plans but, uh This is like from the point of view of of tmp because tmp currently only I think shows shows the value, but is would not be It doesn't have any option for filtering by artifact or something like that But cruncher I can pack it this already works. So that might be confusing. Yeah, let's let's let's make a note Let's make a note about that and We can improve the documentation to make uh to make this to make this clear. So Miro, are you adding this? Yeah, I'm I think it and we will still like I will migrate cruncher to tmp. So these things are We think the goal will be the best By the way, I request to Getting see the documentation If somebody can accept that it will be nice to see it as well Uh, yeah, so the documentation It's described fine, but I didn't see it. I send the request access, but Didn't see it or cannot see it. Do you mean The document google google document. Yeah, yeah, google document. Yeah, I can see it It's it's the last one I've uh sent I just be public. Yeah. Yeah. Okay. Okay. Okay. Thank you. This last one. This is the this is this should be the public one. So Yeah, okay. Yeah, I see it. I see it. Thank you. Thank you One more point to the documentation. There's no install in the prepare steps Between steps prepare have only ansible and shell I was surprised. I did when I saw it yesterday used that it's that simple and I wasn't able to find it yet so It's probably in the in the prepare In the prepare part for the prepares it's there when I when I type minus minus help for the install But I but it's not in the documentation Noted. Okay. Thank you. No, so it's So this is this is that place, right? prepare and then we have we have documented ansible and shell Shell is basically Calling the nf install. So maybe changing that to be to like note that install should be used instead of this Oh Thanks. Thanks for the feedback. Yeah You're gathering issues. Yeah, nice So I better try with podman, but I'm getting a see linux issue Fail to set the file label on var ohm blah blah blah Similar blue issues Yeah, I try at least so I'll have a look better later maybe to see if there's Because I tested in the same test with some other stuff. It's working. It's most likely 99 percent silver Yeah, no, of course. I mean it's I've been testing that on silver blue and it works for me actually Uh, oh, can you can you show me what doesn't work for you? Can you show the screen so we can see uh, let's try to Yeah Yeah, I can copy and paste as well. I was sure you know you can share your screen with the button Yeah, on the bottom, there is a screen Next next to microphone next to microphone on the right side select window entire screen Can you see it? Hopefully Um Not yet and you we can still see you you should you should re-select again. I believe it doesn't I think it doesn't uh Do the action You hit the apply Extrabyte button maybe it's like but then he says five or cannot allow permanent access to Allow I think allow. Do you see anything? Could you switch or use chromium or chrome browser for this purpose? Thanks Yeah, I'm not interested. Yeah, it's hoping it works for me You just need to select the screen you want to share uh, or entire screen and then you click allow Yeah, but I think I had some troubles with the wayland. I think there are some extra permissions It works for me in valent as well There's screen allow I can show you like It doesn't work. I don't know why Where is it again? So down here, right? Wow, this is so hands-on I mean, even if I remember this decision is he doesn't even let me do that. Anyway, I don't know why can you see it by the way? In default uh It wants me to like select, uh, which display I want to share Yeah, I have only one display so Yeah, it it wants it it really needs me to select the display. I want to share explicitly. Uh, it's some uh, gnomes GUI so Ah, okay. It might be because I'm using sway Okay in sway, uh, it works for me in chrome Okay, no, okay Too many combinations Anyway, I'm making a note that we should yeah I'm having a note that we should test more silver blue and document a little bit how to use the empty on silver blue because that is not Like we didn't even try, right? That's finding a note at least So we find a good way for Uh, I'm running silver rule on one of my laptops so I can like do it now I don't know why then So selling issues so maybe you can paste it Uh, so this is the command I'm using Okay, I can try I can even do this So this is from the Okay It's repository Okay But the thing is in the journal there's nothing when I Just says the podman Succeeded but there's nothing else so This is the only line that comes up when I follow the journal Uh I don't know Everything is fine And I see there is the dead flag. Uh, so you know, you should work with selinux, but I don't know something specific to my machine. I guess I don't know Well, I guess using toolbox in isolated baker lip environment if this is the case would be nice. Just start a toolbox and go So what about like for playing, uh, what about starting, uh, just like a container and running Running their uh tmt with provision local You can you can use that one for for playing at least at least for today if we don't find any Better solution. I'll let you guys because at five I'm going to follow a different talk So I'm not going to waste your time. It's more productive if you maybe focus on the other guys Okay, okay And I'll have a look After or tomorrow Myself and I'll let you know in case I know now the where the documentation is and I know where the github repo is for the podman image So I can follow up myself in case That's sorry. I wasted your time Yeah I'm running tmc. It's it's like in in silver blue in, uh The toolbox on local and it works fine So then uh in in podman it also works for me. I can try the virtualization or or something Yeah, virtualization is an issue. Uh, I know of but Oh Okay, um, so, um, maybe maybe we can we can uh, continue with others. So for uh, for you, uh, you see and On and I'll do it works like running running, uh test works fine And your smoke seems to be seems to be okay Yeah, I was just uh Tinkering and try to add different scenarios And if it is come up any error also checking the documentation So if I found anything or come to my mind, I will just ask it or if there are any error I will also point out there. So yeah Mm-hmm super fine Good, um Oh, maybe maybe a question. So would you would you like to Are you working on some github project and you would like to enable it with with packet and try Try enabling the functionality with the with the pluribus testing or Are you okay or is it enough for you with this, uh, local experimenting on your laptop? I have a project. I've just checking out if that is if that is okay I will try to implement it and try to do some testing, but I didn't write testing all yet Maybe I can just try to some couple exemplary testing purposes So I can just implement cmp with my python project. I'm just you know, uh Go on with that. So I'm just checking the checking this one Also try to understand the empty functionality a little bit of question. I have so I let you know I let you know. Yeah in the meantime If you continue, I would like to know about the baker leap and other stuff Okay, fine, fine good and for you Irka I have one smaller project which I'm trying to Uh enable tmp for that And I would like to use that in gating uh in the same way as for As for a packet which is already enabled there And it's So for packet it's already enabled Uh, my project is already enabled Like a packet is enabled on the project But without tests I I have I have tests like the Um The General one. I mean when you don't specify the tests there, it will do for a smoke test for you Basically, it will install install the package from the copper repository. So I'm using that right now Okay, nice good. Um, so that's that's that's very good because extending extending. It's very very easy Testing farm On the packets packets there testing farm. There is a documentation where you can you can have a little time just pasting in the chat Uh In the chat There is an example of what you should add to the dot packet yaml config To make this uh to enable tests as well And that's basically it. So if you have packet already working for that project, that will be very very easy for you Uh, so it's it's just adding those uh for for lines or or something and that uh What would we are doing what we are doing today here? Yeah, and it will take my plans I guess and execute them Yes, yeah, yeah the cruncher does not have like Full tmt functionality Because because it's a proof of concept which which we are using for some time But we want to substitute it with the tmt so that we have on par like the the identical But the the most common uh scenarios should be should be covered like running a script Or running tests detected from by by fmf and that stuff Yeah, I will do my best to upgrade that so there is no no issue like this anymore We will get rid of cruncher. So therefore here it is not a good service, but it's yeah It cannot keep up with the tmt features. So it will be just using tmt Okay, so, uh, maybe maybe I could now continue with with going through going through the The quick start guide Just sorry just one question. I can't find it anywhere. How can I specify plan to be run? I have multiple plans and I want to test just one Yeah, it's sub command called plan plan minus minus name It's uh, it's yeah minus minus nine. Okay. Thanks plan and I am Okay, so running test seems to be okay and Then I just remind from from yesterday that those uh, if you if you do all right, this is If you do Give the run minus minus help you see the the steps which are available And here you can see also the the additional sub commands and that one is called plans for selecting plans and tests for selecting tests And uh, one more one more additional is login which which can be used to login to the gas container To do some investigation or additional preparation and such stuff It's available available here and important thing to understand Not sure whether remember from yesterday, but uh, if you specify some Some step on the command line So if you run tmp around discover, it means that it will do only the That selected step But if you want to modify some step, you always have to uh to say tmp run minus minus all so that all plans So that all steps are executed. So this is this is what what's also also shown here So for the discover uh to discover tests to show what will be around that could be this could be done Let's stop it here now and Then for the provisioning provisioning options Are there any questions or or like this these methods are quite clear to you? So you just If you want to run you and uh, like run all steps and modify some you do just provision minus minus how local minus minus how container or minus how virtual and it just selects this method and Uh, that's that's basically about it. Are there any questions for like this provisioning methods? Yeah, one one question, uh Is there a possible To specify more multiple containers, I mean ideally something like federal devil, which is in packet Which will basically automatically you will test it on all the federas in development are supported So far we have uh, we have support only for one this provision guest for testing but um I was checking and and I think we definitely will come to that that we And and the code is ready or it's prepared for that To be to be able to have like multiple guests or multiple multiple environments for testing so So for now not for now, there is just one but we can but we can do Probably create a multiple plan just change the container but same old test run on multiple of them I think would be some sort of a workaround. I believe so In multiple different content. This is definitely. Yeah, this is definitely definitely possible and you can use Make use of the inheritance FMF inheritance so that you can have like the the settings are are the same Like you can have like complex prepare preparation or something like that But then you then then you do hierarchy for this. This is actually this is an interesting question I can I can show you how this could work How this could work. So I will go with this mini mini example. I still have it here So it could look like it could look like this. Uh, you would have Uh provision, okay, so so there could be some preparation or interesting prepare. I don't know How install package s packages dmp and we'll do That's help. Okay. Now you you can do like Virtual hierarchy and here you say provision Uh provision container and image Fedora Fedora 31 Uh, okay Fedora All right, so this is all right And you do this second time here Uh, and we do like stable and let's say stable And that would be Fedora like this Let's say like this it is and this This this means that if you do tmt It would say that you have two plans And they they both inherit inherit this common values and then These this is one child and this is second child And they change some of the some of the values So now a tmt plan show if you if you if you give it like that You would see that's the basic smallest the preparation. Everything is the same But the only thing which is which is different is is the image And if I if I run If I run the plans it should If it work, let's see We choose this Fedora 32 at run its And then it chooses Fedora row height, which is Fedora 33 here So in this way in this way you can you can use the inheritance and test the Against against that's basically solve the most the problem. I believe so. Yeah, that's amazing Yeah, actually the inheritance is quite a nice feature because It prevents unnecessary duplication and after some playing with it I I I even realized that It's possible to create sim links so You might you might notice Uh, I think it's fetching the row height because I have oh, no, no, it's metadata. The data are slow So I just created a new here You might have noticed that If I say tmt plans list in the tmt repo, there is like Quite many plans in the tmt repo itself But they are repeated. So you see like the plans actually are only these six basic core hops install smog and uni and these are only iterations against different provision methods because we want to be sure that the tests work on We're connecting in container and virtual environment and so this is this is using sim linking So if you if you check like how it how it looks here You would see that under under the try directory, for example try, I don't know try container You would you would have you would have sim links to the plans which are relevant for for testing in container and Here Is the common main Main main configuration, which is inherited and here Inside the container directory. I'm overriding the provision with container and So this is also and I'm also modifying The core the core plan so that it filters only container related tests because In containers, for example, there are documentation that there is not not all the documentation Like the main pages are stripped or they are not installed. So Even such hacks are are possible. Yeah fine Any other question to the provisioning? provisioning step So if not We can swiftly go through the prepare We've touched it already multiple times. So just to summarize Uh install is one of the plugins which allows to install our p.m. Packages Either from repository or local from locally locally built Maybe I can yeah, I can share so here we see the test finished well and You want to think I can show you and or remind from yesterday In the plans what what I have here is the main which is the the parent the shared config And what I'm using quite quite frequently when I make rpms I I do this so I I'm override like the default or I'm adding this this prepare prepare my thought Uh and installing the uh the the rpms Which which I have just just freshly built so that's uh And this is this is installing all the all the rpms from the directory Okay, um So the other installation methods and the ball or shell arbitrary commands Are there any questions for the preparation? Yeah, and do do I have um my git repository in the preppers that Like in the container or where I'm using the provisioning Yes, so I will show you how how how it works with uh with With uh with the Run directory. So let's see. Uh, so I would do tmp run I'm just checking Uh, okay, so I'm running for now locally and I would do just tmp run plan name Smoke so plan smoke And so what you what you see here is the like first line which appears here This is the id of the run and this is basically name of the directory Where uh for this run everything which is needed is stored. So if you go there you can see uh what uh everything Which which is like temporal information of which tmp uses And there, uh, you can also see Probably too much You can also see that there is a plan smoke directory and under it, uh, you have Every step has each uh has its own sub directory and There are the information which uh, which it stores. So for example the discover step If I go there Plans smoke So that's the plan and the discover step. Uh, you would go there and you would see, uh, what's available. Let's see We have here My minus d maybe Uh So, uh, the discover step, uh, here you see tests Yaml which which which list like, uh, the information of tests which will be run and then Then there is The directory before there might be multiple discover Configuration so the default is default one and here in the tests You would see like the contents, uh of the git repository. So you have it available in the discover step and so that, uh The tests have everything they need for the execution and, uh, the run directory will be Accessible on the guest. So you have there everything which, uh, which you would need for for the testing If that responds to your question Yeah, I I'm a I I I'm trying to do what I do right now is basically to install my package By using pip pip install and when I did in the prepare step I did pip install, uh dot Then, uh, it shows me that there's no nothing to install. So I guess it's in some software And I'm not in the current working directory like the current working directory is not git repo But maybe I'm doing some other Other like, uh, I have some other issue I'm not sure. I'm just asking where the Prepare is placed by default like in the container Inside of the container I I see I understand. Mm-hmm. Mm-hmm. So the prepare, uh, the prepare actions are under under I think the default come How's it called current working directory for the prepare is Uh, is the prepare like so Uh We should maybe I would I would say like by default you would be here in the prepare Uh, let's let's see. We can we can we can we can check it And So if we I wonder if I can access my sources in the prepare stage If it's if they are there It should be accessible. Uh Let's see The common What's it? What's the current directory? May I do you know? What do we have in the prepare step? Let's see But you can also look in after basically the test and you can look into the machine so you can investigate You can take a look in Ah, good idea. Yeah, I might uh, I might Uh, uh So What do you do this one? Hmm The prepare found. Okay So for the prepare step Provision prepare Yeah, I also so I was right So, uh The place where you are is in the in the working directory under prepare Yeah, for under prepare for each step. It even says a work there. So we know which work there you are in If you enable verbose enough you you can see Where is the volume because the the resources are volume mounted in right so where is that? Where is the volume on scene? So, uh, you you you would be able to uh to access the But that's that's a question. Yeah, but you you might uh So as as middle as middle side, uh, what you can what you can do to to investigate Uh, is a few Let's say we we can do only the lightest now What you could do is, uh run Let's do it like this and you can say login Uh, and I guess it's a step So in this way We should get a login there And here you see So in this in this way, you can you can do like in the in the prepare step to get a get a shell session And here you see like where you are and what happens there and what's available and uh, so And it's prepared in the default So you would go to discover and default discover default and And tests and there's there's the beautiful I think so So, uh, so if you use As a workaround for now, I think that that should work for you Uh, then you can that you can uh, you can access it in this way like this this path Yeah But we could we should probably find some better way Because uh, if you if you would do Yeah, yeah when when running tests, uh If you automatically get get you're in the in the test repo and all the sources and all the script should be available But in the prepare and uh during the prepare step you're in the in a different in a different place. So that's why That's why I'm looking at Yeah, sorry Yeah, then I'm looking it down as a issue because it feels like it's not very user friendly that it's not available, right? So I'm looking at my question is When when I have like everything prepared via packets, which actually should Turn your sources into into the package you're you're going to test. Do you need sources for the tests? To prepare as well to prepare the test um okay For packet i'm thinking it more like an integration test and why From the from the point of view that the packet will install the install My package and I will run the tests on the install package This is which is great thing which I am not able to do easily right now And I want to use that For it, but for local run I'm thinking about the similar scenario But I guess much better will be to just set the python path and test this do the small text small Test from from the python path on the other hand. I guess there's no reason to do that Because the small test really don't give me any value because the files the ideal just basically Check that the module is there means the files there And it will also be done by my unit test So I guess the smoke this is really more sensible for the integration test Where it's installed automatically by the by the packet So I guess I will I will I will leave this leave this test out because I don't think it give me a real value in this case if if you Like have everything set up with packets you can even run packet locally. So It should do everything you need and then on top of that you can run tmt with the artifact That's packet tests or something like that and it will Packet build maybe good build. I'm not sure. Yeah, I think it's built Ah, okay, that's interesting. I didn't know that I can run it from from the command line. I thought it has to be by the service Okay, thanks That's the better solution definitely and the smoke test I'm thinking if I should have the test like the smoke test for packet but not to use it locally I guess it will be the best solution Yeah, okay Thank you Okay, fine So that would be about about the preparer step. I think All that we have so far And now here is uh, oh I've copied it all also here So to enable in packet for you your car If you if you have tried this is this is basically what you need to add to the dot packet yaml corner fig And it should it should enable the testing as well And then you would see so how how it looks like for those Haven't seen yet. So for example tmp on some last pull request What do we have? The ticbicle libraries from recommend as well So at the at the at the bottom The bottom you would see you would see how it how it looks like Here are results for for individual individual fedoras And because we have here Like fedora all it means that all Rohit and all supported fedoras will be will be tested in packet and and the results that could be Some detailed results can be seen here Uh But it's a little bit too old. So and if you click on the artifacts there there you would see There you would see some Some some details here In the execute lock Okay, I wonder what packet is doing with the provisioning because I guess it's does not support all the provisioning All the provisioning types I think so far it just ignores it, right? Yeah, so what we will do there with their uh, like packet That in that system that runs it runs in actually containers. So we And it's it's a pretty much container so we can spin up a bm. So the only supported So only supported provisioning method there will be virtual machine. So we get a virtual machine Uh, it's been up there and we will use Will force provision how we're to There currently it's like a different code, but it does the same thing as the empty provision how virtual So once we switch to the empty, we will be forcing that uh provisioning method there Even though we will have container in the test It will force virtual So that's how it will and That's a good good question. So so even for for the fedora ci and and such stuff like Basically the provisioning part would be over it and always better, right? Or should we consider? I think later on when we will have the Later on when we will have the future party team with the everything we need then also container container test will work as Like so if you have if you have how virtual for one plan how a container in the other plan It will run as as you wish, but for the start we will force virtual it's Okay uh Yeah, um May I set the artifact to basically not run it locally? I mean artifact pull request. I guess it should do this Uh, and I said it for whole plan. Is it possible or it's just for some part of the plan So in in general I want to disable running this plan out of outside of the pull request Which means the mouse smoke tests Mm-hmm. So here here it is how how it how it should work plants And and the artifact, okay, let's see I have it. Yeah so um What we could do as I mentioned before like this is this is supported in cruncher. So that means in packet About tmt still applies that idea status So how would you imagine we should probably add at something like Defining the artifact on the command line and by default it could be I don't know There would be some default there would be some default and you could you could Select this artifact on the command line and based on that Only the relevant plans would be run Yeah, I I guess I guess I can even plan minus minus minus nine and just specify the regex for for around all the plans which can which are supported local Or something similar and maybe discover even discover if I discover it's inside the plan There are also tags so you can filter out you can also The text edit You can tag your that That's not sure about relevance yet, but For the for the plants you can don't don't be confused by by by the names like the Like the structure depends on you. So it you might have Directory called local local plans and packet plans it like the the the naming doesn't have to be plans So you can group your plans which are relevant for running from a local host into a separate directory and in this way Use easy to filter by regex and and then I can create script to just turn it without any any Any required to know the command or anything like that. Yeah, that sounds great. Thanks That's basically what what would I did because I wanted to to be able to run only, uh Locally, basically this this is this this is basically uh plan loss What I did with this with this structure I intentionally created this uh under under a different directory so that I can so that I am able to To run tmt tmp run plan Plan name plans and this uh, this runs Uh This runs only local local. So this is this is if I want to do some fast fast testing only on local host I I do this like not with a discover But like the whole testing and this is done. Uh using using this like directory structure. Yeah, so Thank you. Thank you all Okay, uh so, um Uh, if you have like this this plans ready, I think you can you can try to create the poor request Which would have which would have this uh, this snippet of the packet yaml Config edit and it should work it the test should start working and we will see what will break So, uh, that's uh, that's one of the options And we have a couple of other sections here, uh to to go Into more detail and this is uh creating test This includes a simple short template and eclips and template so we can have a look at that and uh There are there's some section about managing test. This is something I showed yesterday so that That that's probably is not that interesting, but uh, We can go through that Maybe, uh, let me know if you if you would like to, uh Uh If you want me to go further and go go through the quick start guide and give a short overview or you would like Rather to deep dive into something you're you're trying to solve now in the poor request, so Uh, I will I will Commit everything and set it up, but so you can continue Then before I or until I finish it Mm-hmm Fine fine get Um Okay, so uh, so with the creating test so, uh One of the motivations for TMT was to to be to provide an ability to easily create new tests And that includes the templates so if a developer who hasn't written any test wants to quickly start Uh, so, uh, we have this functionality to quickly create create a new test So, uh, it works very easily TMT Create test, uh It's uh, yeah And I'm mentioning plan here because uh, that's that's very very start So if you do in it you you can do in it without without anything And then you would have an empty directory, but, um, then later you can you can decide to To put there something more. So let's see, uh, I'm I'm here in the in the mini in the mini directory and I would like to, um, I would I would create a plan plan create But this time I would not, uh, I would I would call it basic. Okay. Let's let's say plans play it basic And It asks for the template And instead of mini which is used with TMT in it as well. I would I would use this full template And if you look, uh, if you look here, um So here we see that there's also the discover part and the prepare step example So, uh, you can tune it up as as as you need And the discover the discover actually here shows and Probably more more more common scenario Because what we were showing so far is like that you you provide the smoke test directly in the plan And that's about it. But usually, uh, you have, um, much many much more many many many many tests and you want to, uh Have them maintain them in the in the directories and and doing such stuff So it it might make sense, uh, to Use so for now the end zippled part. I will just, uh, go a bit away And here for the discover step, I will use, uh, FMF, which means look around in the git repository for FMF metadata level one And find and use use all tests, uh, which you were able to find so, uh If I place here the repository the test would be fetched from From a remote repo here is a GitHub TMT But I would just delete it and if it's if it's empty the test would be detected or discovered from from the same repository here So, uh, in this way, uh, if I have the plan basic and I do TMT run discover now What we would get is that there's one One test found in the in the example like this which we had before But but for the basic it says, uh, zero tests found because there are no tests So if I do TMT, it says like there are no tests no level of one metadata found and So how does the test look like? um Let's create it in the same way in the very same way TMT sub command test and create so let's create a test smoke TMT test create a smoke And uh, it will ask for the template again So if we start with the with the shell template, uh, you would see that the directory was created And in the directory you see the metadata and the test The data are just the template with the summary contact And the test is some default very simple template written written in shell But let's see if uh, let's make it a little bit more interesting by using a big clip test Which has phases and some additional stuff, which might be useful for a little bit more complex tests So I would I would go and I would create Create the test again And it would be a template Template Yeah, it Doesn't want to override existing tests. So I put force there and there we have So let's see And the test looks like this, uh, here you see, uh, the basic structure of a big clip test at the started sources some big clip big clip functions Which contain like journal start which starts and ends the journal and there are separate like phase several phases Uh, which this is this is meant for for the preparation of the test then some cleanup in the middle in the middle There is The test itself. So here we create a temporary directory enter it Make sure the pipe fails even if there is With the exit code even if there is a pipe and here, uh, the test itself very simple TMT help The output it saves the output to uh to a file and we grab We make sure that the uh, that the output contains the string. So very simple test like that Skeleton which you can which you can adjust as you as you need uh, and now, um If I look around it says, okay, I have found one test Um, it is called test smoke tmp test show would give you overview of the of the test That's the that's the default content. Uh, and now if I do tmp on discover Let's be a little bit verbose I would see that the plan our advanced plan basic Which uh, this covers tests using fmf has discovered one test The test is listed here and if I would execute it It would It would run this it would run this test. So let's see tmp run my name My name basic Uh, it runs in the virtual machine. So it's slow. Let's let's be let's be quicker I will I think it would be default So tmp running basic container it runs the tests it It makes sure that the big clip is installed because this this is an extra package And I have it installed already so to make it a little bit faster. So if I go with some some more some more details, you would see that Uh, it checks that the uh, the big clip is installed the package is installed and then runs the test and here is output Output of the test probably too large As the setup there's the test itself it runs the command saves to the file and then The output should contain test management. This is this is the assert which makes sure that that everything went well So so in this way, uh, you can easily create many many tests and Nicely organize them in the structure and do some additional stuff Uh Not not only some smoke smoke smoke tests, but something something more More interesting and more complex For some more inspiration of some some more examples, uh, I could show I could show something, uh from the From the uh from the gdp Way Okay So here That's uh So, uh, we're using the tmt big clip tests and this this is like everything under the structure tests and So let's see, I don't know See core Environment test which is also, uh If you want to tmp test show You might you might use also dot notation, which means, uh, you want to limit limit Limit the the test to be shown or listed uh on the everything which is under current directory So here here you see the information about about this test and How how some a little bit more interesting big clip test can look like It what's what's nice about it? Uh, it gives you a nice lock. It gives you some nice lock So for example, I think we uh, let's add some Exit codes codes Not sure Woods Yeah, yeah exit codes So that's maybe maybe interesting example CD execute codes Uh, here Here is a test and see this is how an output of the big clip test looks like Uh, this is uh, this is a test which is which is checking that uh adders and failures and all this stuff are well reported And you you can for each test you get this section and the output and then the possibly, you know, and And the overall result For this case, uh, if we run tests like this, we use that the execute is done as a as a As a big clip. So we would you would see here here in the in the plans on the So that's basic for example that I'm using The method is big clip And big clip dot tmt because it's it's executed in the in local in local tmt rounder This is something we want to change in uh in the In the near future because we want uh, we originally thought that it's it would be good to specify in which way the test should be uh Executed in the level two in each plan But after a couple of workshops with guys we we had We realized that people would like also to like have Inside a single plan run Uh, simple shell tests and big clip tests as well and combine them So it's not possible to have uh to have this information level two But we will have to store this in level one metadata so that each test can say i'm a Simple shell test or i'm a big clip test So that's tough Okay, any any questions to this part to like creating plan creating tests these different different test types Or anything related to this Okay, so if uh, if not How is your output request going here go? Success If you are specifying in execute the The script there you can take a look better if you want if you look at the first change so he has He has a there a discover discover phase But he like runs something in execute script. So I think that is the not needed I think that will not merge So if he has that smoke test we discover how fmf but in execute he executes a script I think that will discover fmf doesn't need to be there Uh, yes If you don't have any other tests in the repositories, so then the discover how fmf is not needed Uh, but I mean, uh, it can be even combined Uh Like it will not break it will just say like I haven't found any Level one metadata. So the only test I have found is the script in the execute So there will be that one test And I think it should be possible to combine. So if you if you create a new test Uh, like as as I just have shown using tmt test create You can have like there would be a second test and both of them would be run But if there are no level one test, it's not necessary Well, I will definitely definitely change here, but I don't want to do that now because it was I started Tests running So pick it is pick it is oh, okay and tests are running Very nice. It's screaming. Yeah I have a question because I don't know the stages of that. Uh, can you bypass a package just Run the tests without like building any package Is it is it ready? No How would it work because you wouldn't you wouldn't have any you would have the sources Uh, I I didn't know the stages for that, but uh, Generally, I think we have to look about something like that. Uh, but it's not implemented apparently Uh-huh. Uh-huh I yeah, I didn't know about that. So maybe that's some new feature coming So it might be easy even even more easy to like, uh Uh Yeah directly execute to directly uh check like with the with the surface and without without building an rpm interesting Okay, so very good. Uh, so, uh Cruncher is crunching We might see maybe some results in the near future Let's see Can you show the dashboard if if uh, you see, uh, how many projects are actually building? Uh, or running on on testing farm? Yeah, that's the dashboard package Yeah But it's a little bit misleading I think now because I think by default back it Runs we are testing farm all the time So we added there a feature that we always at least test the installation of the copper build On the on the vm. So, uh, it might be maybe misleading, but yeah But it's very cool that you actually do attests Yeah, there is a test test trans tab. So you are in the wrong tab There is a test trans tab and that is the one So you're running tests for users even if they don't know it Yes, yes, they are running we are testing farm should be there Oh, it's running nice. Uh, I have a question about some file issue. I didn't understand I was checking on civil and other stuff. It was fine ish, but uh Uh, if it is possible, could you show me how do you send file into container in in tmc because I didn't I tried to do it, but I didn't do it so Can you show me some full proof test please something because I didn't understand that part of it or I didn't find it I mean if you didn't documentation, please point it because I didn't just find that. So I'm kind of between stuck with us But So that's and that that's a file with you which you have in the git repo or It can it can be local if it is a git repository. Okay, that's fine. It's working I can just shall run a shell script and jump in the file and do that specifically It's easy, but I didn't find the local file test So I don't let's just say I want to do it in locally before sending the github repository So that's why I was wondering how do I do it in uh locally? But okay, actually I can run a local tmp way. That's fine, but I I would like to know I have a file and I have a project and I would like to send this one to a remote Server podmon server something I have But I would like to you know some let's just say I found figure out send my files But can I send my files into podmon container via tmp or should I do it myself over a volume network? I don't test part We we don't have any Any specific function for this like sending sending file sending file to the to the to the guest or to the container but if if the file is available at the time when the discover phase is done Then the file is included in the in the run directory So it should be available in the container okay, so I have to Okay, so what I understand is please if I'm wrong correct me guys so I have to create a podmon machine locker file and Then do my own simple preparation and send my files as I pointed out. We use this put Stuff on locker file. So my files will be in there and also I'm going to open my network share and some So volume share and send my files Then run everything else with tmp and install it and do whatever it requires to play. So that's what I understand And basically if this is correct Mero, can you can you confirm like this? I'm not sure Can you show us can you show us? I mean because I'm still not sure I'm following you completely. So Cute you should have the whole local directory available to you in the container Right, so that is there But if you need anything else, you will need to somehow get it there via curl or I don't know how Like can you can show us directly what what you have there? Or we can try to find out a solution for you. Maybe Uh, I just create some simple file on tmp, but I didn't find or I don't know how to specify Use that file in my container. So I I didn't Find the way out. So I just created it And you created this very in the local in the current working directory, but you are Yeah, I just create yeah in like basically it's next to tmp plans. I have some main dot pipe I'm simple show me this version of the python version or something to be testing purposes I try to put the file into my Dark container via tmp, but I'm trying to see or figure out that that kind of possibility It should be already there better. We should we already have an example from the execute So you should not need to anyhow move any file, which like basically the whole Working directory should be available to you in in the execute Scripts which you run, right? So she should be there as a local file. So let's Better Yeah, I will try to I will try to show how this how this should work So what do we have here? So we have the So the plans example The plans example is doing uh It uh, okay, so we We just execute something and Let's let's say the execute the test itself would be cat Some file get some file Uh, or I don't know. Yeah, let's just make it get some file and You would have this file created here. So that would be just the some file with some with some content And uh, if If you run the Let's be very nervous and I think um plan I mean is example I think it it's it should just just work Yeah, yeah, here you see so, uh So this is this is how I uh, how I did it. I just created the file is here File is here and in the plan example. I just I just use cat Okay, I found my I found my mistake. So I didn't I'm basically blind for listening to you guys and stuff like that I'm sorry. I have to type main dot pie. But I've typed main dot pie phone. I was like, why is it not work? I didn't know Sorry Okay, now I'm working. I'm working so I can run everything on my project. So awesome. Thank you guys. Sorry. Sorry. Sorry. Sorry No problem. Yeah, no problem And just just to clarify this this working director is it it might be it might be sometimes sometimes confusing Uh in the specification All right in this spec which is here uh As I uh described like yesterday this this uh different metadata levels the level one which describes tests So here uh on the left you would see all the attributes which are available for a test and one of those attributes is called path and it says Uh, how to what is the what should be the current directory? When executing the test So here you could say that I have this directory Test slash data and it it would enter this directory But before executing the test and you could have all the necessary files under that directory But that might be one option. Yeah, I was checking that patch thingy, uh, but didn't run it So that's probably my naming issue. So that's why it was the problem basically But yeah, uh, but uh, there's a tiny question about yeah, please Okay, I just I just clarify if I if if you have a look in the in the helps Uh, here is an example. So here it it shows how how it's possible to enter something I was basically trying to be doing based on that example you showed me So I was basically like why is it not working? I was like I was like between stuck with this I tried to put on execute and put one of this cover So probably it's still saying I didn't notice the file change because I was listening here and looking there I didn't notice this extension. So sorry my fault. Yeah. Yeah, no problem. Mm-hmm good But you had some question on mine Uh, yeah, a tiny question. So, uh, there is a command You showed me but I didn't see it or Basically, maybe misunderstand it because it was just screen sometimes frozen a little bit because of the delay So can we use the same container I created for testing purposes because you know Let's just say if I'm downloading a lot of stuff and get some packages. I don't want to do this like Like zero every time. So can we use exiting? container after the from the first test because I would just refresh my files But I don't want to install everything and like, you know, get up cloning and yada yada, etc Because let's just say I have some big pile of in cooling processing I don't I just want to keep that back. I can create some Podman file and save it as a file, but can we just you know, do some maybe lazy survey if it is possible in tmt Just like let it by and learn about it So if I understand the use case, uh, well, uh, I think this hearing examples On the on the documentation page. There is a page with examples. It's a large large one. There's a bunch of stuff there So one of the sections here how to run tests it shows Some hints how to debug tests. So that this might be some, uh, one option It's possible to do the provisioning part and preparation and whatever And then you can use, uh, minus I like specifying or use the last run So you can you can do like the preparation which takes a lot of time or sometime And then you can execute execute execute around the execute step again and again and So again, so I can do the empty run id which is the id one which is in my first test Then I can just use Again and again, but when I when I update my file It will just put my files and run it run as it is But my file already will be in there because I just create this all kind of processing will be just skipped Basically what I understand Uh, yes. Okay. Yes. I think I think it should it should work like that with the container Thanks to uh, thanks to the volume mount you don't even have to like sync sync again the the files like if you update the tests Uh, but we have an issue for making this a little bit more simple even for the vm config Uh, or the virtual machine case because uh, if you modify tests then the discover step has to be done Once again because the tests have to be copied there or updated in the in the run directory But uh, this is uh, actually this this uh, that that was one of the use cases We definitely wanted to have covered that you do tmt tmt run Okay, let's let's go plan name smoke And you you say I want to go only until execute And this means that uh, it will execute the steps but only those until execute and I Specified name smoke so yeah, so you'll see it test the smoke test in in all the different all the different Uh, uh, environments. So I I choose only the local one. So here you see, uh I I do it like this And the steps go like discover provision prepare execute and then it stops and you can do tmt run last execute Execute again, which means force with force because if you if you do like this it says like, uh The execution has been already done. It was already done nothing to do But if I do force it means that the execution will be Uh done once again. So in this way you can you can like modify your test or modify Modify the rpm package and then then install it once again and in this like in an interactive way To debug the test and improve it until you are until you are satisfied like everything is okay And once it is you can do or you can do last Do run last execute in the report so so that you so that you see what what actually how the test went And uh like doing this several several times even with some more verbose to to see what happened And once everything is done you would see it would do like run last Since report And uh that should be it I think And in the case uh because I'm running local so it does nothing But in case there was a virtual machine So only when you run the finished part the virtual machine would be turned off and and the container would be removed and such stuff I might just get no to this some of the commands as an example and typing my stuff when I listen to you So awesome. Thank you for clarification and showing me how to do it. Thank you so much I mean, I will try it and if I stuck with it something I can find you guys and I are here or something. Yeah, thank you Yeah, sure. You're welcome So that that would be where like we have uh last like 10 minutes or so Yerka edit that PR if you have it open that should work in crumpture I'm not sure now. So the the one we discover FMF and just uh executing those tests that should work Because he's getting there some error Yeah, I will send you a link because it's I restarted the test Oh, it's Okay, I'm looking at appearing in the chat now Yeah, if you look at the so that should work this one the the basic one should work So this uh discover FMF uh provision is ignored right and then execute execute And the test is um I think that execute doesn't have script Yeah Execute doesn't have script. Uh, yeah Yeah, the links are in the chat. I'm I think you know, I think the scruncher doesn't support this uh Shell-based FMF test, right? So that will be the problem, right? I think what let me see I don't like Exist anymore that system should not exist anymore. So I don't need to be great to DMT. So we don't have any issues It will not work Execute execute simple script that should definitely rock or not Yeah, it should run. But in latest container, is it Does it have a Python truth? Sorry, yeah I'm just uh thinking It's Python 3 exists in the latest container. So it should be yeah, yeah, nothing else Yeah, uh better. It works for the weekly tests, but for the shell test I think this kind of FMF it doesn't work. So that will be the problem in cruncher I mean almost almost sure that that is the case. It should be simpler not complex No, that's fine. That's Easy, I will fix it. I will work on it. So we have DMT everywhere and these issues start not there I think I think I think it's broken because of some screaming shoe we had. I think that just break the glass I'm like Okay, I will update my test if you agree if you don't have problem with the long Put there Yeah, put there the artifact built for or or some artifact that is not fully quest For the basic and it will run just the just smoke test, right for now Because that basic test just won't work. I think that how shell doesn't work But we support how big a little bit this cover FMF better. I think in cruncher that always worked Uh-huh. That's a surprise for me. I thought I thought cruncher knows that Okay, but it's possible. Yeah, yeah, let's get rid of cruncher. Yes to make it consistent So for the for the remaining time, uh, what we have exploring tests Sharing tests, there's a couple of things mentioned and the and the quick start guide maybe maybe to just highlight some of those or remind So you can have the tests do not have to reside in the same repository You can reference a remote repository you can share for example, we have I don't know test shell. I think we introduced like this In the test namespace of federal testing space. It's possible to have to have Test repository and share tests. So here is an example how Like all the posix compliant shells can share a single test repository and then you can reference it From from individual components. Uh, so that's that's one thing to to consider or Uh downstream you can test upstream tests and and doing such stuff So there this is something that might be interesting And there is a section with various hints Uh, so just to make sure in the script and the in the lab to metadata and under execute You can use multiple commands not only single one or even a multi line script show script That should be working nicely With dmt not not sure about cruncher Uh, it's possible to reference multiple repositories. So each step Uh, except for execute. I think for now can I have multiple multiple configurations? So here, for example, you see the discover discover steps a step is doing like fetching tests From fedora and fetching another set of tests from upstream And all those tests, uh, which which will be discovered from those two locations will be executed in a single plan. So that's uh, that's uh, some Some nice feature that could be useful as well And here is all at the end only some like overview that the The very minimal path how to create a new test could look like this that you just clone the repository You initialize it you Adjust the minimal plan and you run it and it's done And here's some extended example, which we chose like creating a test A dedicated test not not simple simple one in a in level two meter data Some tips for virtualization By the way, about virtualization, uh, could we we can also add, uh, Link we key link over there for extensive user transfer point that maybe if test is okay Because it's just simply open and have to add it on sometimes. Maybe it could be nice Documentation add on on it because it's also about virtualization. So Uh, so is there is there some page which we which we could reference. Yeah, uh, let me just let me just pull it out. Yeah Great super super that would be useful. Uh, I know there's an updated one. So let me just check it out Coming up Yeah, here go for the for the artifact use, uh, what what we have here and In the It's planned helps I think yeah this like this Update, okay, uh, which means basically, uh The pull request and having carrots and also, okay, thanks My default grant you takes like it's everything is relevant But if the artifact is specified, it looks for pull request it should work like that. Yeah I put it for the documentation links over there. So for extensive information So have to manage and add or use cases because it has more Abilities So, you know, some people needs to be check out what's going on over there So we can see how it starts Everything isn't basically over there. So they they can just read it out and have it proper Uh, you get so that will be awesome to have it and add on because cmp also related. So yeah, yeah Thanks for pointing that yeah Currently like I tried to put in discover and when defining shell tests I put there the list And that doesn't work yet. Uh, there is a link in the chat Uh, you can take a look. I tried to add the to the one package that I own In federal test, but yeah I think I think it doesn't work well I'm trying to