Hi everyone, I'm on the tools and automation team. I wanted to talk a bit about test automation for Servo, and specifically the use of Rust for test harnesses.

I want to preface this by saying I'm not trying to tell anyone what to do. I understand that Servo is a young project, and whatever helps you guys be more efficient in the short term is a good thing. That being said, I have a few concerns I'd like to voice over the handful of test harnesses that have been implemented in Rust (I see reftest, contenttest.. are there more?).

1) Test automation needs to be as rock solid as possible. This will be very hard to do with a language that hasn't even been released yet. I'm not knocking Rust, but it is a language that is currently in constant flux. With test automation the goal is to eliminate as many variables as possible, and you definitely don't want the language the harness is written in to be a significant one.

2) The chicken and the egg. I might be a little off base with this one, but my understanding is that Servo is like a proof of concept for Rust. In this sense, Servo is almost one giant test for Rust itself. By using Rust to implement the harnesses you are in a way using the system under test to test itself.

3) Long term test automation. Right now Servo is a relatively small project, so it's ok to take shortcuts that enable you to be efficient in the short term. But eventually you'll want tests running on official infrastructure, reporting to something like tbpl. I don't know when this will be, but I do know that if the Servo team has its own ways of doing things, implements harnesses in Rust, and generally doesn't take the time to understand how the existing test infrastructure works, it will take us (the tools and automation team) and releng a massive amount of extra time to get things into production (think on the order of quarters if not years).

I say this not to sound controlling or whiny, but out of a desire to avoid many of the mistakes that were made with the B2G project. My goal here is to raise awareness of the potential problems we will run into down the road, and to create some bridges between our teams.

What does this mean for now? Not much. Go about your day as usual. But if you do go to implement a new test harness, please consider doing so in Python (2.7). It's what all our other harnesses, infrastructure, monitoring tools, slaves and reporting depend on. If you aren't very familiar with Python and need a harness implemented yesterday, by all means use Rust. Just be aware it could cause you some problems down the road. If you have concerns about using Python over Rust, I'd love to hear why.

Finally, please feel free to contact me (ahal on irc) regarding any test automation related questions, or join #ateam where there are many people who can offer help.

Cheers,
Andrew
_______________________________________________
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo

Reply via email to