Comments (2)
My thinking on this issue is that the best way to resolve it will be to use docker containers, there already exist windows, MacOS and Linux docker images, so I expect you could produce a docker template with the OS required, the application to be tested, robot framework + RF Libraries needed for the AUT and rfswarm-agent.
A docker container typically is assigned 2GB ram and 2 CPU's this means a typical 8GB desktop could run 4 containers, or if the ram is upgraded to 16GB could run about 8 containers.
I found a docker example template that had robotframework + robotframework-seleniumlibrary, I added rfswarm-agent to this template and was able to run several selenium browser sessions with it, it was a bit rough as I needed to install a newer python version. I need to spend more time investigating and documenting how to do this nicely, in the bean time if someone needs this functionality hopefully this info will help you to a solution.
from rfswarm.
I had some other ideas about this today:
- Docker Containers typically don't have GUI's but I found I can run XVFB on a Linux docker, not sure what to do about Windows/MacOS docker containers yet
- Virtual machines and containers (I know this works)
- any virtual machine software will work, the disadvantage is you'll have the overhead of the full OS in each VM
- Proxmox Containers work well (Linux only?) can run XVFB in a Proxmox Container
- On Windows run the agent as a service with different user accounts
- create n windows user accounts (local or domain accounts, domain accounts, are probably better)
- use srvany from the windows resource kit to create n number of windows services (one per user account)
- configure the services to run as a nominated account (not SYSTEM)
- When configuring the command line for service you'll probably want to use some of these options:
-a %HOSTNAME%-%USERNAME%
- so that each agent has a unique name-i %USERPROFILE%\rfswarmAgent.ini
- This will give each agent it's own ini file without having to hard code them-m http://yourmanager:8138/
- this might make it easier to change the manager if needed, just edit the command line options on the service, but then it might be easier to edit the ini files in the user profile directories too
- On Linux run the agent in multiple XVFB's
- write a shell script that takes a number as an argument (e.g. variable might be called $AGENTNO)
- script will first start XVFB on the display number $AGENTNO
- script would then set the display variable for the display number $AGENTNO ( 0:$AGENTNO ?)
- script would then start the agent with
-a $HOSTNAME-$AGENTNO
so that each agent has a unique name
- On MacOS run the agent as multiple users
- MacOS has the ability to switch users, so create n number of user accounts on the MAC
- Login on the mac and configure the agent so start on login (https://support.apple.com/en-au/guide/mac-help/mh15189/mac)
- MacOS has a auto login on boot option but I'm not sure if you can configure multiple accounts to login on boot? could be worth to try this otherwise after a reboot you'd need to login to each account then switch user and log in the next user, repeat till all the users are logged in (this is why you want the agent to start on login) (https://support.apple.com/en-au/guide/mac-help/mchlp1158/13.0/mac/13.0)
I think the approach chosen will need to vary depending on the OS the GUI app need to run on, I think the above gives a reasonable option for each OS.
from rfswarm.
Related Issues (20)
- Test Cases for manager url Issue #98
- Test Cases for Agent Name Issue #100
- Test Cases for text filters Issue #105
- Test Cases for result name with Trace log level Issue #119
- Test Cases for filter by agent Issue #121
- Test Cases for ensuring all required libraries get installed Issue #123 HOT 2
- Test Cases for Manager field validation Issue #126
- Test Cases for manager generating csv files before there are any results Issue #128
- Test Cases for reporter to auto generate reports with GUI Issue #132
- Test Cases for % charecter in various places Issue #136
- Test Cases for chosen font Issue #148
- Test Cases for TPS Issue #155
- Test Cases for embedded arguments Issue #156
- Test Cases for Reporter hangs on launch Issue #157
- Test Cases for Double Quotes Issue #159
- resource files fail to copy to agent when using ${CURDIR} and glob pattern HOT 1
- Try to configure proxmox for self-hosted runners for github actions
- Add NiceProject to Sponsors page HOT 1
- Github build not supporting python 3.7 on macos arm64 HOT 3
- Python 3.13 Support
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rfswarm.