ah https://matthewwild.co.uk/projects/scansion/ but I actually need to control how the client connects so probably not
moparisthebest
actually this looks perfect https://matthewwild.co.uk/projects/scansion/character-classes/client/
dogehas left
serge90has left
dezanthas left
jgarthas left
serge90has joined
jgarthas joined
dogehas joined
sonnyhas left
sonnyhas joined
SouLhas joined
tskhas left
pasdesushihas joined
9lakeshas left
9lakeshas joined
tskhas joined
dezanthas joined
marc0shas left
marc0shas joined
Millesimushas joined
Millesimushas left
thomaslewishas joined
thomaslewishas left
dogehas left
atomicwatchhas joined
msavoritiashas joined
serge90has left
serge90has joined
emushas joined
pasdesushihas left
pasdesushihas joined
wurstsalathas joined
dogehas joined
thomaslewishas joined
thomaslewishas left
Ingolfhas left
dogehas left
Ingolfhas joined
dogehas joined
Ingolfhas left
COM8has joined
Ingolfhas joined
jubalhhas joined
jonas’
moparisthebest, what's your goal?
jonas’
there's my xmpp-blackbox-exporter for monitoring tests (I can imagine making it support messages one day), aioxmpp does have an end-to-end test suite used in CI of both aioxmpp and at least OpenFire
jonas’
scansion is used by prosody e2e tests
jonas’
(for a certain definition of e2e, though)
dezanthas left
COM8has left
Millesimushas joined
Alexhas left
Alexhas joined
Martinhas left
Martinhas joined
marc0shas left
PapaTutuWawahas joined
kikuchiyohas left
Millesimushas left
marmistrzhas joined
kikuchiyohas joined
FireFlyhas joined
marc0shas joined
dezanthas joined
Millesimushas joined
syrupthinkerhas joined
Apollohas left
9lakeshas left
9lakeshas joined
Millesimushas left
dogehas left
Millesimushas joined
msavoritiashas left
msavoritiashas joined
Millesimushas left
lovetoxhas left
debaclehas joined
lovetoxhas joined
serge90has left
xeckshas left
debaclehas left
debaclehas joined
Millesimushas joined
dogehas joined
MattJhas joined
sonnyhas left
sonnyhas joined
syrupthinkerhas left
Apollohas joined
xeckshas joined
kikuchiyohas left
kikuchiyohas joined
debaclehas left
debaclehas joined
kikuchiyohas left
kikuchiyohas joined
Apollohas left
Millesimushas left
Apollohas joined
dogehas left
Sam
moparisthebest: I have a thing for that. Right now it's not made to work outside my own project, but a minimal front end could make it scriptable https://pkg.go.dev/mellium.im/xmpp/internal/integration
9lakeshas left
goffihas joined
larmahas joined
Millesimushas joined
debaclehas left
Wojtekhas joined
sonnyhas left
sonnyhas joined
9lakeshas joined
Millesimushas left
larmahas left
jubalhhas left
Sam
Finally merged IBB support… the last time the design doc where I decided to do this was modified was a tiny bit over 2 years ago. That one took a while :)
jgarthas left
rafasaurushas left
rafasaurushas joined
xnamedhas joined
COM8has joined
COM8has left
COM8has joined
COM8has left
sonnyhas left
sonnyhas joined
huhnhas left
moparisthebesthas left
serge90has joined
huhnhas joined
inkyhas left
9lakeshas left
9lakeshas joined
emushas left
inkyhas joined
inkyhas left
emushas joined
inkyhas joined
inkyhas left
inkyhas joined
9lakeshas left
rafasaurushas left
nephelehas joined
moparisthebesthas joined
nephelehas left
nephelehas joined
9lakeshas joined
moparisthebest
jonas’, the goal is to set up 2 servers (prosody for now), a DNS server (bind9 probably), and have a client connect to each server and send/recieve a message successfully
MattJ
It's the kind of thing scansion was designed for, but there are plenty of ways to do it
nephelehas left
nephelehas joined
Sam
moparisthebest: what is the thing you are actually testing?
moparisthebest
Sam, xmpp-proxy, so DNS lookups, TLS validation, the connectivity between client and server and server and server
rafasaurushas joined
xnamedhas left
moparisthebest
MattJ, yep scansion seems perfect for the client end, for the rest I'm thinking docker-compose looks like a good fit but open to suggestions
MattJ
Yep, I'd definitely reach for docker-compose (or terraform if you want to extend to *actual* servers rather than containers)
Sam
oh nifty, I guess I've seen this at some point because it was in my broweser history but I had forgotten. this might be useful to me too if I added it to my integration test library; thanks.
pulkomandyhas left
pulkomandyhas joined
tskhas left
moparisthebest
during POC stage it was fine to test manually with 2 prosody's and gajim on my LAN but that's beyond annoying to continue haha
Wojtekhas left
Wojtekhas joined
nephelehas left
tskhas joined
sonnyhas left
sonnyhas joined
sonnyhas left
sonnyhas joined
larmahas joined
pulkomandyhas left
moparisthebest
Sam: your test library requires the program, eg prosody, to be installed locally looks like? I guess it could be ran inside a container
debaclehas joined
Sam
Yah, it doesn't download it or anything, it expects to find it in the path. It could be modified to point it at an existing instance easily enough though, probably with an option to locate prosody instead of starting it
moparisthebest
For now I have to do some pretty obscene things to the prosody config so I'll take a manual approach I guess
9lakeshas left
inkyhas left
Sam
Yah, that's one of the reasons I wrote that library instead of just spinning up a container (I wanted to be able to control the config easier)
jubalhhas joined
moparisthebest
plus I have to point it at a custom DNS server and make it trust my fake certificate authority, all really hard/annoying to do locally but trivial with a container
Ingolfhas left
Ingolfhas joined
Sam
I always just generate a self-signed cert and feed it to both prosody and the client, but at some point I should probably figure out a better way to handle that in case I need to test anything around certs later
9lakeshas joined
sonnyhas left
sonnyhas joined
sonnyhas left
sonnyhas joined
nephelehas joined
nephelehas left
nephelehas joined
larmahas left
larmahas joined
dezanthas left
xnamedhas joined
9lakeshas left
Sam
Actually, I was forgetting, the big issue I've had when trying to run this in containers is that they refuse to let me fork as anything other than root (even though everything is root by default and I can never figure out how it's possible to get permission denied)
marmistrzhas left
Sam
Mostly it's not an issue, but one day I'm going to think something's working and it's going to turn out to be failing as a normal user and I'll be sad.
moparisthebest
I think it'll be possible to run all this with rootless podman which would be the ideal situation, but, guess I'll find out :)
Sam
I've never looked into how that works; I assume everything in the container is tagged as being owned by the user that executed podman and if you try to do root-y things it will fail?
nephelehas left
Matrix Traveler (bot)has left
homebeachhas left
Matrix Traveler (bot)has joined
homebeachhas joined
xnamedhas left
9lakeshas joined
moparisthebest
it uses the linux feature to "allow user X to use UIDs/GIDs 10000-11000" so each user in your container can have their own uid/gid but all mapped to you
qrpnxzhas left
sonnyhas left
sonnyhas joined
moparisthebest
and depends what you mean by root-y things, like you still have "root" inside the container and can delete / inside the container etc
Sam
oh right, that makes sense
xnamedhas joined
sonnyhas left
Sam
Inside the container is the big problem for me. I can't understand why "sudo -u prosody echo test" works but "fork(prosody, echo test)" or whatever doesn't
sonnyhas joined
rafasaurushas left
moparisthebest
with rootless, sudo shouldn't work but fork should, I think...
sonnyhas left
moparisthebest
I'm pretty new to rootless containers though, I've basically only used them for builds so far
sonnyhas joined
Sam
Sudo would still work because like you said you're still root inside the container, no? I dunno, I don't really understand Unixy things like this. Been a long time since I did ops work that required debugging this kind of thing
moparisthebest
I only know it doesn't because I read this last night lol https://www.redhat.com/sysadmin/sudo-rootless-podman
sonnyhas left
rafasaurushas joined
sonnyhas joined
larmahas left
larmahas joined
sonnyhas left
sonnyhas joined
sonnyhas left
sonnyhas joined
sonnyhas left
sonnyhas joined
Sam
My only real experience running this in containers was getting it going on Codeberg CI as an experiment. The issues were mostly just "things are root and ipv6 isn't supported", so I have very limited experience TBF
xnamedhas left
qy
It uses a user namespace
sonnyhas left
sonnyhas joined
qy
And tl;dr sudo will never work in a user namespace
Sam
oh yah, that makes sense
Sam
I used to do this sort of thing for a job; I don't think I realized just how much I'd forgotten.
9lakeshas left
qy
Heh
sonnyhas left
sonnyhas joined
sonnyhas left
sonnyhas joined
inkyhas joined
Sam
That makes me wonder if fork/exec is just disabled in this container. I wonder if this CI system supports --privileged
9lakeshas joined
Zash
process count limits mebbe?
Wojtekhas left
Wojtekhas joined
xnamedhas joined
Sam
hmm, nope, --privileged doesn't fix it locally either. Oh well.
9lakeshas left
Sam
Not that it really matters, it's someone elses CI with no secrets on it and limited network access, prosody can just be root.