Can't get RFSWARM robot script execution logs in the result repository

Hello Everybody , I’m new in this forum though I use Robot Framework to implement testing in my company for a while now.

Recently , I have been using Rfswarm tool created by @damies13 in a POC to figure out if we could use it for the performance testing in my compagny.

I’m going to explain the environment used for the POC:
I installed rfswarm in a docker container on a linux image. So I succed to installed all the prerequesites to make the tool run correctly .
The agent and the manager GUI are in the same docker (I wonder if this isn’t the cause of my issue…).
The tool seems to run correctly and the agent seams to be correclty detected.

Before runing my robot test in the tool, I’ve already check that it works correctly and I’ve removed some exclude library to make the results displayed in the Run tab.

The thing is, when I run my robot test with a configuration of 2 Robots, a ramp up at 30 secondes and 10 mn Run I never manage to have Robot value incremented in the agent tab:

And the worst is I can’t find the robot’s execution “result.htm” log files , so it almost impossible for me to debug anything.

The robot test seems to run correctly till the end. I can find the : 20231027_154408_Scenario.db log file in the result repository but no files related to the robot tests execution.

So my question is , can anybody have already encounter the same issue?
What could be the reason why I can’t acces to the robot results files as the test seems to correctly run .

In the repository : :/tmp/rfswarmagent/scripts , I can see that my robot files and all his dependency are correclty loaded:
I can see this in the .json file as well :

{“StartTime”: 1698414263, “EndTime”: 1698414878, “Iteration”: 306, “Index”: “1”, “Robot”: “1”, “jobid”: “1_1_1698414263”, “Test”: “DICT API Get DSP list”}

{“StartTime”: 1698414278, “EndTime”: 1698414878, “Iteration”: 298, “Index”: “1”, “Robot”: “2”, “jobid”: “1_2_1698414278”, “Test”: “DICT API Get DSP list”}

Could anyone have any idea about this issue, please?

Thank you very much for your help.

Hi Barry,

I’m not sure if you can see the GUI of the manager while it’s running in the docker container? if you can, after the test switch to the agents tab, you should see the agent enter a status of Uploading followed by the number of files remaining to upload, wait until the agents return to ready status before exiting the manager and the files should be in the logs folder that should be in the same directory as the .db file.

Failing that, the agent create a temp folder, so when the tests are running the files get created in the temp directory.
If you environment variable $TEMP if /tmp, then look for the folder /tmp/rfswarmagent/logs

Hopefully you’ll be able to find the logs and that will help you find the issue,

It’s 1 am here, so I’ll check this thread in the morning if you have any more questions.

Dave.

Hello Dave,
Thank you so much @damies13 for your quick reply.
Yeah , I manage to open the GUI manager interface in docker by connecting a X11 installed inside the container on my local computer interface. It’s been a real chore but I succed to do it. So I’m able to see the server GUI interface running in the docker container.

I never succeed to see the upload step’s you’re talking about. I really think there isn’t any upload of the log in my test case and I don’t get why. Do you think that, the fact the agent and the server manager are running in the same docker container could be the reason of this issue? So the agent and the manager can’t correctly talk together? When I try using the api it’s the same I can’t get any relevant information .
For instance when I run this in my browser: http://localhost:8138/AgentStatus
I get this result : Unrecognised request: ‘ParseResult(scheme=’‘, netloc=’‘, path=’/AgentStatus’, params=‘’, query=‘’, fragment=‘’)’

And I’ve already check the repository : /tmp/rfswarmagent/logs it’s filled with many repositories like in the screenshot below in it and they are all empty.

As I’ve told you before , in the result directory there is only the .db file.
I’ve try to remove the VPN of my company before running the tests , but it seems to change nothing.

If you’ve anay other idea perhaps you could be my saviour.

Indead it’s quite late at this moment at your place, So have a good rest.

Regards,

Esther.

just to confirm you that I never go through the step : upload at the end of my test.

I’ve got the status : Running , then at the end of the test switch directly to Ready status:

I don’t know if this informtation could give you more elements to help me identify this issue.

Thank’s in advance,

PS: I’ll check my e-mails Monday morning at work

Regards,

Esther.

Hi Esther.

Firstly some general info

While this is not related to your issue, just an FYI, running both the agent and manager in the same machine is not the reccomended way to run rfswram, this is especially true for a docker container as they usually have very limited resources. and because of the difficulty of accessing the GUI of the manager as you found. I would have reccomended a starting point of running the manager locally and the agent in the docker, just to make things easier.

Another FYI the agent and manager don’t know they are running on the same machine, they always act as though they are on different machines, in the documentation Robot File handling (transfer from Manager to Agent) is useful to understand what happens

That is what I would expect to happen if you did that, as mentioned in the API documentation that path only takes a POST request and you gave it a GET request, the API is only there for the agents to send data back to the manager.

Now for ideas to help with your issue

From what you’ve said so far, It seems like the agent is attempting to run the robot but for whatever reason robot framework is not running.

The empty folders you see in /tmp/rfswarmagent/logs, each one corresponds to a robot framework process being attempted to start by the agent. When robot framework is run it’s stdout is redirected to a file in this folder, so these folders being empty indicates robot framework didn’t even run

If you can view the console output of the agent, then try running the agent with -g 1 (enable debug level 1) and see if you can get more information on your problem, you can increase upto debug level 3 (actually there are 9 debug levels but beyond 3 it becomes really noisy and only useful for debugging specific functions while developing)

It might be that the agent simply doesn’t find the executable for robot framework? By default it just attempts to call “robot” (robot.exe on windows) and lets the OS path determine where the executable is, this works most of the time but not always.

There are a couple of ways you can resolve this issue

  • Add the robot framework executable to the OS path
  • Find RFSwarmAgent.ini and update the robotcmd entry with the full path to robot framework executable
  • Pass the full path to robot framework executable to the agent using the ether -r or --robot

Hopefully this leads to resolving your issue, but I’ll check back later if you have more questions.

Dave.

Hello Dave.
Thank you for your proposition to resolve my issue.
I’m really greatefull for your reactivity to help others with their issues while attempting to use your tool.
I thought I could run the agent and the manager sever in the same container even though I’ve read in the Documentation : [Robot File handling (transfer from Manager to Agent)] that this wasn’t the basic usage. As I’ve saw many people use it on the same computer (both agent and manager server), so I thought I could try to do a similar thing in a docker container.
So first of all , indeed, I’ll try to add the robot Framework executable path to be sure the issue isn’t create by this and second of all , if my previous attempt don’t work , I’ll try installing the agent on my computer and run the manager in a docker container then try to connect both of them.
I’ll keep you informed about of my attenpts.

Thanks again for your help,

Regards,

Esther.

Sorry, I forget to ask you this question in my reply.
Where the robot file should me store ? In the agent or in the manager server?
I thought it was in the manager server as in the GUI interface it is possible to upload robot file to needed to run.

Thank you in advance for your help,

regards,

Esther

Hello @damies13 ,

Hope you’re fine . I just want to tell you that my issue has been resolved by your proposition to enter the robot executable path to the running agent command line.
The issue was indeed due to the fact that the executable wasn’t found by the Agent.

Thank you so much , I think the my next step will be to try to run the agent and the manager in 2 differents docker containers (to integreted it in CI/CD) and try to better understand the way to exploit the metrics reported in the .db file . By, why not trying to display it in a granfana docker container…

I’m not super use to performance tests , this is my first try so I need to improve my knoledge on this side.
If you have any ressources you could recommended to me , it’ll be a really great use.

Again , thank you for you help ,

I’m going to look how to close this topic since the issue as been resolved.

Good luck for the future and perhaps see you soon since I’m trying to include your tool in my company project, so that might means , perhaps I could encouter other issues.

Regards,

Esther

1 Like

1 Like

Hi Esther,

You can, there is nothing to stop you from doing this, it’s just not recommended because the agent can run many robots and saturate the resources of the machine it’s running on, if the manager is on the same machine it will become very slow and may stop responding. Given docker containers have very limited resources (typically 1 cpu core and 2GB ram) this is more likely to be a problem.

Either on the manager or on a network drive the manager can access. the manager will transfer the robot files to the agent’s local drive so the agent doesn’t need access to the source files

Great news :+1:

I wanted to keep RFSwarm self contained, there is a reporter tool that will allow you to generate reports from the db file. as for live graphs, they are available in the manager gui

It’s quite simple to add a listener file to robot framework, if you need the data in granfana or one of the other similar tools you can copy the listener file that the agent creates and modify it to send the data to granfana at the same time. The problem is there are lots of these types of tools, which ones do I support and with what priority, the other issue is they all tend to have very site specific requirements, so I’d rather focus on making RFSwarm better and leave integration with site specific tools for now. If you need this and need help with it I’m happy to give help.

2 robots is giving you 14% CPU but Memory is at 67% at most you can only run 1 more of these robots on this agent as your agent is memory constrained

To run a test of 100 robots you’ll need at least 34 agents with this configuration. BTW this aligns with my experience with docker when using SeleniumLibrary or Browser Library.

Nothing specific, when I was learning performance testing there was very little resources available, I do remember watching an interview with the lady who did performance testing for Google back then (this was over 15 years ago) and that was very interesting, not sure if that video is still around?

In the RFSwarm FAQ I have a few tips that might help, particularly Can you help me get started? Which test cases should I choose?, also reading Preparing a test case for performance should help get you thinking about what you need.

Good luck on your performance test journey I hope you can prevent many performance issue making it to production.

Dave.

2 Likes

Dave, Thanks so much for your replys,

Regards,

Esther

1 Like