forked from autotest/autotest
-
Notifications
You must be signed in to change notification settings - Fork 0
DesignGoals
Lucas Meneghel Rodrigues edited this page Sep 22, 2011
·
2 revisions
- Open source - share tests and problem reproductions
- Make it simple to write control files, and yet a powerful language
- Make it simple to write tests and profilers - encourage people to contribute
- Client is standalone, or will plug into any server/scheduler harness
- Some people just have single machine, want simple set up.
- Corporations each have their own scheduling harness, difficult to change
- Very little interaction is needed, simple API
- Simple handoff from full automated mesh to individual developer
- Maintainable
- Written in one language, that is powerful, and yet easy to maintain
- Infrastructure that is easily understandable, and allows wide variety of people to contribute
- Modular - the basic infrastructure is cleanly separated with well
defined APIs.
- Easy writing of new tests, profilers, bootloaders, etc
- New non-core changes (eg new test) doesn't break other things.
- Lower barrier to entry for new developers.
- Distributed/scalable maintainership - code controlled by different people.
- Core is small, with few developers
- This isn't a super-hard problem.
- Most of the intelligence is in sub-modules (eg the tests).
- Error handling.
- Tests that don't produce reliable results are useless in an automated world.
- Developers don't write error checking easily - need 'encouragement'.
-
Core - ties everything together
-
Tests - execute each tests. many, many separate tests modules.
eg kernbench, aim7, dbench, bonnie, etc.
-
Profilers - gather information on a test whilst it's running, or before/after.
eg readprofile, oprofile, schedstats, gcov, /proc info
-
Results Analysis - Compare equivalent sets of test results. Per test / profiler.
-
Kernel build - build kernels, with different patches, configs, etc.
Will need different variations to cope with mainline, distro kernels, etc.
-
Bootloader handling - Install new kernels, and reboot to them, pass parameters, etc
eg. Grub, Lilo, yaboot, zlilo, etc
Here are some of the key changes from previous systems I have seen / used / written:
- The job control file is a script. This allows flexibility and power.
- The client is standalone, so we can easily reproduce problems without the server.
- Code and tests are modular - you can allow loser control over tests than the core.
- Code is GPL.