14:30:39 <mmrazik> #startmeeting
14:30:39 <meetingology> Meeting started Tue Mar 27 14:30:39 2012 UTC.  The chair is mmrazik. Information about MeetBot at http://wiki.ubuntu.com/meetingology.
14:30:39 <meetingology> 
14:30:39 <meetingology> Available commands: #accept #accepted #action #agree #agreed #chair #commands #endmeeting #endvote #halp #help #idea #info #link #lurk #meetingname #meetingtopic #nick #progress #rejected #replay #restrictlogs #save #startmeeting #subtopic #topic #unchair #undo #unlurk #vote #voters #votesrequired
14:31:00 <tvoss> hi
14:31:08 <mmrazik> We are here to have a public meeting on QA stuff we do in Product Strategy
14:31:34 <mmrazik> today we would like to share some details on what we do with utouch in terms of quality
14:31:44 <mmrazik> [TOPIC] unit and integration testing for the utouch-stack
14:31:52 <mmrazik> tvoss: its yours :)
14:32:06 <tvoss> mmrazik, thanks :)
14:32:23 <tvoss> Hi all, my name is Thomas and I'm working as a quality engineer in the utouch team
14:32:54 <tvoss> let me present the "architecture" of utouch briefly
14:33:12 <tvoss> the stack mainly consists of 3 (4) components
14:33:46 <tvoss> utouch-frame is an abstraction layer that takes care of device, window and touch event handling
14:34:07 <tvoss> and it abstracts away from "platform specifics" regarding touches
14:34:31 <tvoss> utouch-grail sits on top of utouch-frame and provides gesture recognition capablities
14:35:01 <tvoss> utouch-geis integrates both utouch-frame and grail to provide gesture recognition services to applications via different interfaces
14:35:05 <tvoss> for example: DBus
14:35:46 <tvoss> finally, we have utouch-evemu optionally below frame
14:36:25 <tvoss> obviously, a stack like utouch requires both unit-testing and integration-testing
14:37:23 <tvoss> for both purposes, we rely on utouch-evemu to inject "fake" input events to the system
14:37:44 <tvoss> and this testing/injection layer allows us to record and replay corner/test cases
14:38:45 <tvoss> we use google test and its extension xorg-gtest to implement both our unit _and_ our integration testing
14:38:50 <mmrazik> tvoss: so evemu exists just for testing purposes? Or is it needed in production environment as well.
14:39:14 <tvoss> mmrazik, evemu is mainly used for testing purposes
14:39:47 <tvoss> it relies on a kernel interface (uinput) to inject input events even below X
14:39:56 <mmrazik> ok. I was just curious
14:39:58 <cnd> (it used to be a runtime dependency in the old utouch stack, but isn't anymore)
14:40:18 <tvoss> as X and XI 2.2 are parts of our stack as well
14:40:34 <tvoss> any other questions so far?
14:41:17 * MrChrisDruif waits for the full "presentation"
14:41:50 <tvoss> a quick side note on xorg-gtest: it's a google test fixture/testing environment that takes care of starting/stopping a dummy x server environment
14:43:06 <tvoss> in our integration testing scenarios, we rely on xorg-gtest to start up a dummy server, insert fake events via evemu, and let them pass through the X server to utouch-frame
14:43:24 <tvoss> and to utouch-grail subsequently
14:44:13 <tvoss> with this chain in place, we are able to test both touch handling and gesture recognition with the help of pre-recorded touch sequences
14:45:06 <tvoss> so far for the actual testing setup. are there any questions? If not, I would go on with our continouos integration architecutre
14:45:26 <mmrazik> just curious -- how many tests do we have in place right now?
14:45:29 <mmrazik> for the integration part
14:45:56 <tvoss> mmrazik, all together, I would estimate like 20 overall cases
14:46:13 <tvoss> where each case might contain different types of gestures to be recognized etc
14:46:30 <cnd> grail has 18, frame has 2 or 3
14:46:33 <tvoss> some of them are regression tests
14:46:39 <tvoss> cnd, thanks
14:46:40 <cnd> geis has maybe 5?
14:47:06 <mmrazik> thx
14:47:36 <tvoss> okay :)
14:48:00 <tvoss> we use jenkins for continouos integration purposes
14:48:49 <tvoss> and we recently started working on a virtualization setup that allows us to build _and_ test frame, grail and geis in a vm
14:49:17 <tvoss> this allows us to do ci both for different releases/versions of ubuntu and for different platforms
14:49:37 <tvoss> currently, we run our builds and tests for precise on both i386 and amd64
14:50:20 <tvoss> but we are planning to extend this to further versions and platforms in the future
14:50:50 <MrChrisDruif> I'd highly suggest ARM
14:51:06 <tvoss> MrChrisDruif, yeah, we are working on that
14:51:36 <MrChrisDruif> Seeing most tablets and smartphones are ARM, I wonder why that wasn't the first one
14:52:29 <tvoss> MrChrisDruif, well, problem here is the availability of vm's
14:53:00 <tvoss> only qemu supports arm at the present moment (at least, for alien host architectures)
14:53:06 <cnd> MrChrisDruif, also, the code is platform agnostic
14:53:23 <cnd> the tests will likely catch trivial bugs like variable size differences
14:53:36 <mmrazik> MrChrisDruif: and HW in general. While our lab is  "full" of x86* HW  we don't have ARM ATM.
14:53:48 <mmrazik> but as tvoss said. It is on our radar and we are actively working on this
14:54:05 <mmrazik> the current plan is to have a functional setup for ARM testing for the 12.10 development cycle
14:54:10 <mmrazik> which starts in few months
14:54:20 <mmrazik> actually its more like a month
14:54:28 <tvoss> mmrazik, indeed :)
14:55:43 <tvoss> okay, putting all of the parts together, we are currently running builds and all of the tests for every merge to the trunk's projects
14:56:05 <MrChrisDruif> Great, thanks (had to check what agnostic code meant)
14:56:31 <tvoss> developers are provided with the unit test results/build logs and code coverage analysis results
14:56:43 <MrChrisDruif> (P.s.: 12.04 is in 30 days, so less then a month)
14:57:03 <tvoss> for the latter, we rely on instrumented code and gcov/lcov/gcovr to extract the results
14:57:10 <mmrazik> MrChrisDruif: ack
14:57:15 <tvoss> MrChrisDruif, thanks
14:57:57 <tvoss> any other questions?
15:00:01 <tvoss> well, thanks for reading then :)
15:00:06 <mmrazik> tvoss: thanks for the presentation
15:00:16 <tvoss> mmrazik, yw :)
15:00:36 <mmrazik> thanks everybody for participating and see you next month
15:00:40 <mmrazik> #endmeeting