Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Scalability and Hardware at Nomanini

Scalability and Hardware at Nomanini

Scaling TDD, CI and CD for Hardware, Firmware and Software, presented at Scaleconf 2013

Dale Humby

April 18, 2013
Tweet

More Decks by Dale Humby

Other Decks in Technology

Transcript

  1. © Nomanini, 2013 million 700 pa 85 $ bn 60

    $ Mobile subscribers in Africa Ave spend by mobile subscribers Total market Source: Pyramid Forecast for AME, McKinsey Global Institute, Lions on the move, Jan 2010
  2. © Nomanini, 2013 Fast Transactions Easy to use Trusted method

    • Fast printing • Trusted proof of transaction • Reliable • Simple interface 1 2 3 Scratch cards Nomanini terminal
  3. © Nomanini, 2013 Pick n Pay MTN Vodacom Server on

    GAE Cash Airtime Credit Redemption Printed voucher Seller Mobile subscriber Cash
  4. © Nomanini, 2013 KeyBoard Helper LED Helper Driver Mocks RAM

    State Machine Logic Proxy for hardware
  5. © Nomanini, 2013 bool TestStateManager_LockLEDOnWhenLockPressed(void) { // GIVEN Lock LED

    is off LED_TurnLockLEDOff(); // WHEN Lock button is pressed KeyBoardHelper_PressLockButton(); // AND scan keyboard StateMachine_Update(); // THEN Lock LED should be on ASSERT_TRUE_MESSAGE(LED_IsRedLockLEDOn(), “Red Lock LED should be on”); }
  6. © Nomanini, 2013 KeyBoard Helper LED Helper Driver Mocks RAM

    FALSE State Machine Logic Test // GIVEN Lock LED is off LED_TurnLockLEDOff();
  7. © Nomanini, 2013 KeyBoard Helper LED Helper RAM TRUE FALSE

    State Machine Logic Test Press button // WHEN Lock button is pressed KeyBoardHelper_PressLockButton(); Driver Mocks
  8. © Nomanini, 2013 KeyBoard Helper LED Helper RAM TRUE TRUE

    State Machine Logic Test Press button Update // AND scan keyboard StateMachine_Update(); Driver Mocks
  9. © Nomanini, 2013 KeyBoard Helper LED Helper RAM TRUE TRUE

    State Machine Logic Test Press button Update Assert // THEN Lock LED should be on ASSERT_TRUE_MESSAGE(LED_IsRedLockLEDOn(), “Red Lock LED should be on”); Driver Mocks
  10. © Nomanini, 2013 Running All Tests... Hardware Rev 6, rel

    2 Firmware 2623-0d8ab4be2f02 Running Test Fixture: State Manager Tests (Part A) --------------------- TestStateManager_ButtonPressTimesOut:PASS TestStateManager_LockLEDOnWhenLockPressed:PASS ... TestStateManager_StaysLockedWhileCharging:FAIL 11 Tests 1 Failures 1 Ignored Test Run FAILED. 10/11 tests passed. Terminal output
  11. © Nomanini, 2013 Started by upstream project "Slave-Build" build #361

    run_functional_tests.py -c ci.ini tests(INFO): TEST_BLOCK_1.s19 ... ok tests(INFO): TEST_BLOCK_2.s19 ... ok tests(INFO): TEST_BLOCK_3.s19 ... ok tests(INFO): TEST_BLOCK_4.s19 ... ok tests(INFO): TEST_BLOCK_5.s19 ... ok ... tests(INFO): TEST_BLOCK_23.s19 ... ok tests(INFO): Test run passed Triggering a new build of Upload_to_FTP_for_CI #245 Notifying upstream projects of job completion Finished: SUCCESS Console Output