Twopence is (will be) a remote execution engine for tests, able to run tests in virtual machines and real hardware through various means of communication : virtio for KVM / QEmu, ssh on top of libssh, serial lines. This library can be called from shell and ruby wrappers.

While it is already functional (and used), it still needs polishing, stabilizing, and extending. It is also planned to integrate it with Pennyworth (project Machinery) and let it go fully Open Source.

All crazy ideas and good will are welcome. It could be Python wrappers, support for multiple simultaneous tests, support for Linux containers, tests through a firewire cable, or whatever crosses your mind.

What was achieved

  • - GitHub: The project moved to GitHub and is willing to play the rules of OpenSource;
  • - Ctrl-C and other aborts: now it is possible to interrupt a remote execution with Ctrl-C, both from shell and from Ruby interface;
  • - Pennyworth integration: now Pennyworth (project Machinery) calls Twopence to execute remote commands, inject or extract files.

What was not achieved

  • - Bug: running the Twopence server for virtio or serial lines with output redirected to a file results in the whole output being repeated with each new message (probably some buffer not flushed).</li>
  • - Better packaging: we would need at very least separate packages for client and server parts;</li>
  • - Run over firewire: this item is a bit crazy - the idea is to use firewire to run tests and transfer files without using the network stack, by using either raw libraries or raw devices. I bought the necessary hardware but had no time to play with it :-( ;</li>
  • - Multiplexing: enable simultaneous and independent tests running on the same machine;</li>
  • - Ruby documentation: the Ruby API is currently undocumented.</li>

What could be done better

  • - Ctrl-C and other aborts: enable aborting a file transfer, not only remote execution of commands;
  • - Pennyworth integration: transferring recursively a whole directory's contents is still done with Cheetah.

Looking for hackers with the skills:

c packaging ruby

This project is part of:

Hack Week 11

Activity

  • almost 5 years ago: pdostal liked this project.
  • over 9 years ago: sfent joined this project.
  • over 9 years ago: mvidner liked this project.
  • over 9 years ago: osynge liked this project.
  • over 9 years ago: bergmannf liked this project.
  • over 9 years ago: RBrownSUSE liked this project.
  • over 9 years ago: oholecek liked this project.
  • over 9 years ago: ancorgs liked this project.
  • over 9 years ago: e_bischoff added keyword "c" to this project.
  • over 9 years ago: e_bischoff added keyword "packaging" to this project.
  • over 9 years ago: e_bischoff added keyword "ruby" to this project.
  • over 9 years ago: e_bischoff started this project.
  • over 9 years ago: e_bischoff originated this project.

  • Comments

    • ancorgs
      over 9 years ago by ancorgs | Reply

      Sounds really interesting. Any repository or documentation to have a look?

    • e_bischoff
      over 9 years ago by e_bischoff | Reply

      Currently only on https://build.suse.de/package/show/home:ebischoff/twopence (sources available). I was planning to move them to GitHub right for the hackweek.

    • jreidinger
      over 9 years ago by jreidinger | Reply

      I think it make good sense to also support VNC as a way how to communicate with machine as it immediatelly increase range where it is useful. BTW some comparison to openQA if it is orthogonal or if it can benefit from some synerge would be nice.

    • e_bischoff
      over 9 years ago by e_bischoff | Reply

      Twopence is used to execute remote commands and transfer files just like you would do with scp or ssh (but works even with no network, unlike ssh). It is not a remote display system like VNC. It works only with a running system, unlike OpenQA, because it either needs a SSH server or a Twopence server on the System Under Tests, so it cannot test the early stages of boot. In short, there is not much duplication of functionality - at least with those two pieces of software.

    • e_bischoff
      almost 8 years ago by e_bischoff | Reply

      I'll mark this project as finished. Not everything has been done, but it is now stable and regularly used software.

    Similar Projects

    Extend GObject based introspectable API to libzypp by zbenjamin

    [comment]: # (Please use the project descriptio...


    Deep Packet Inspection: compare the performance between libnetfilter_queue, NF_HOOK and eBPF XDP by nguyens

    Deep Packet Inspection: compare the performan...


    Extract generic testing framework from Linux Test Project code base by acervesato

    Project Description

    The Linux Test Projec...


    The Missing Middle: Add an intermediate brightness setting for auxiliary LEDs in Andúril 2 by gkenion

    [comment]: # (Please use the project descriptio...


    Avahi Integration and Network Connection by vojha

    Avahi Integration and Network Connection

    ...


    openSUSE on ZoL from OpenZFS project by jkohoutek

    Idea is to have SUSE system with OpenZFS as roo...


    Update Haskell ecosystem in Tumbleweed to GHC-9.6.x by psimons

    [comment]: # (Please use the project descriptio...


    A set of utilities to produce a "from scratch" OCI/Docker container using Opensuse/SLE rpms by ldragon

    [comment]: # (Please use the project descriptio...


    SSH key distribution solution by vgrinco

    Project Description

    SSH key distribution so...


    LSP server for SPEC files by mcepl

    Has anybody ever heard about RPM Spec LSP serve...


    Reduce the amount of TODOs for RuboCop in OBS by enavarro_suse

    Project Description

    The OBS project has a...


    Modernize SCC Customer Management and/or Patchfinder by digitaltomm

    [comment]: # (Please use the project descriptio...


    Catalog/Online Store for a bakery in Rails 7 by gfilippetti

    [comment]: # (Please use the project descriptio...


    Dawnscanner: parsing a simple sinatra application by pperego

    [comment]: # (Please use the project descriptio...