MPRIS Tester

I’ve just finished writing a tester app for MPRIS.  It covers all the parts of the standard for querying and controlling media players over D-Bus.

It’s pure Qt, since I didn’t need any KDE-specific stuff – it’s just a quick hack, anyway.

I was going to write it in (and use it to learn) a scripted language like python, but I got impatient.  I might reimplement it in an interpreted language at some point.

There are a couple of problems (to do with receiving structs of ints) that I need to track down to either my program or Amarok (or both – I reference Amarok’s code when implementing those bits).  But other than getting the status and the MPRIS version, it seems to work.  And I think it’ll be a handy little tool.

I’ll upload it to when that site returns to normality, but in the meantime:

MPRIS Tester

MPRIS Tester

Edit: The application can be found at Qt-Apps.


8 Responses to “MPRIS Tester”

  1. Bobulate Says:

    Linky linky…

    After Cornelius blogged his bit on using Wordle, I made my own of my blog, and it’s clear that there’s one topic I mention far too often; also the distinction between KDE and KDE4 isn’t clear to the Wordle software. And “stuff” is in there along w…

  2. Bogdan Bivolaru Says:

    Could you explain what MPRIS actually is?
    I am new to KDE and QT so although this acronym might seem trivial for you, it is not for all your readers.

    I suppose it’s some kind of protocol or library used in KDE. I read your post since I am interested in automatic testing and applications that help doing automatic regression testing.

  3. Kevin Krammer Says:

    I wonder which of the interpretation variants you used to implement the MPRIS spec.

    Do you ignore the name of the interface and just fake the same one despite each object having a different one?

    Or do you just send all calls to one of the objects, since it implements all methods anyway?

  4. randomguy3 Says:

    @Bogdan: Oops, I should have linked to that. Done now, in both posts.

    @Kevin: I implemented it the way the spec defines it: using the same interface name for three different interfaces. It’s daft, but there you go.

  5. Kevin Krammer Says:

    Well, the spec leave several interpretations open, e.g. what does a service reply to one of the interface’s method described for one object when being called on another.

    Of course this is easier for the client side since it can avoid calls to underdefined methods, but a service implementation will have to be tested against all clients it cares about and should probably implement fallback behavior for those it can’t be tested against.

    It unfortunately also breaks discoverability, i.e. letting power users find ways to interact through testing calls (one of the very successful properties of DCOP).
    Finding out through trial&error why three object have the same interface but are picky about which method is called where, for probably more than one service implementation they care about, will make this quite frustrating.

    I guess that at least for the KDE users among them their programs will also have a sane interface, like their KDE3 versions had with DCOP.

  6. MPRIS Tester 1.1 « The KDE Underworld Says:

    […] Confused?  Read my introductory post about MPRIS Tester. […]

  7. MPRIS Tester 1.2 « The KDE Underworld Says:

    […] You can download it at, and you can find out more about MPRIS Tester from an older post. […]

  8. AlexM Says:

    I found your site on technorati and read a few of your other posts. Keep up the good work. I just added your RSS feed to my Google News Reader. Looking forward to reading more from you down the road!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: