Skip to content
Snippets Groups Projects
  1. Jul 02, 2020
  2. Nov 16, 2017
  3. Jul 17, 2016
  4. Jun 30, 2016
  5. Jun 28, 2016
    • Philip Withnall's avatar
      librhosydd: Drop period parameters from rsd_subscription_new_wildcard() · 62cafe09
      Philip Withnall authored
      
      It does not make sense for a wildcard subscription to restrict its
      signal emissions by period — a period criterion can only apply to a
      single attribute, otherwise we can end up with pathological cases where
      one attribute is emitted often enough to cause rate limiting; and all
      other attributes are emitted rarely enough to be accidentally dropped on
      one of the attribute emissions which is rate limited. RsdSubscription is
      not set up to allow the emission rates for each attribute to be tracked
      individually, which is what’s needed to implement period criteria for
      wildcard attributes properly.
      
      Instead, acknowledge that if the client has chosen to use a wildcard,
      they aren’t particularly fussy about what attributes they receive, and
      just give them everything, with no period limiting.
      
      Reviewed-by: default avatarSimon McVittie <simon.mcvittie@collabora.co.uk>
      Signed-off-by: default avatarPhilip Withnall <philip.withnall@collabora.co.uk>
      Differential Revision: https://phabricator.apertis.org/D3509
      62cafe09
    • Philip Withnall's avatar
      tests_: Add tests for unicast signalling · 8ba0be1e
      Philip Withnall authored
      
      Test that the new utility functions in libcroesor work correctly; and
      add an integration test for end-to-end unicast signalling.
      
      Note that this requires the teardown check in integration.py to be
      removed as it was failing. I have not investigated this yet; disabling
      it for now is fairly harmless, but in the long run it should be
      investigated to see whether it’s possible to describe the system’s
      behaviour down to individual main context iterations, or whether that’s
      not worth pursuing.
      
      Reviewed-by: default avatarSimon McVittie <simon.mcvittie@collabora.co.uk>
      Signed-off-by: default avatarPhilip Withnall <philip.withnall@collabora.co.uk>
      Differential Revision: https://phabricator.apertis.org/D3507
      8ba0be1e
    • Philip Withnall's avatar
      tests_: Allow integration.py to run systemctl · 39c6d7a3
      Philip Withnall authored
      
      It needs to do this to start and stop various Rhosydd services. We allow
      systemctl to run unconfined because it has no profile, and adding all
      the profile rules for the various things it does would bloat the
      integration.py profile. It’s only an integration test.
      
      Reviewed-by: default avatarSimon McVittie <simon.mcvittie@collabora.co.uk>
      Signed-off-by: default avatarPhilip Withnall <philip.withnall@collabora.co.uk>
      Differential Revision: https://phabricator.apertis.org/D3505
      39c6d7a3
    • Philip Withnall's avatar
      librhosydd: Add the current time to each RsdVehicle getter · e532588b
      Philip Withnall authored
      
      Each vehicle has its own clock domain, which all timestamps for
      attributes from that vehicle are relative to. This means that the
      timestamps for two attributes from a given vehicle can be compared to
      see which was updated more recently (and how much more recently, in
      microseconds).
      
      However, there was previously no way to compare timestamps between
      vehicles, or to compare the timestamp for a given attribute to the
      current time. Given that the clock domain for a vehicle could differ
      arbitrarily from the system clock domain (g_get_monotonic_time()), this
      meant that clients could never work out how long ago (in system clock
      terms) an attribute was modified.
      
      Fix that by exposing the current time in the vehicle’s clock domain with
      the return value from each RsdVehicle getter which returns a property or
      property metadata. This allows each attribute in those results to be
      compared to the clock at the time of returning the results, to find out
      how old that attribute value is, in microseconds.
      
      This patch deliberately does not expose the current value of each
      vehicle’s clock domain as a value by itself (for example, as a
      get_current_time() method) as that would both tempt clients to poll it,
      and would introduce unavoidable race conditions between getting the
      current time and getting a set of attributes.
      
      This breaks a lot of API.
      
      The implementation in VddAggregateVehicle is worth paying attention to
      when reviewing, as it needs to aggregate attributes from multiple
      vehicles into a single aggregate vehicle. That means adjusting their
      last-updated times to be in a single aggregate clock domain. This is
      done by defining the aggregate clock domain to be g_get_monotonic_time()
      and tracking the difference between that and each of the source
      vehicles’ clocks with each value returned from those source vehicles.
      
      Reviewed-by: default avatarSimon McVittie <simon.mcvittie@collabora.co.uk>
      Signed-off-by: default avatarPhilip Withnall <philip.withnall@collabora.co.uk>
      Differential Revision: https://phabricator.apertis.org/D3407
      e532588b
  6. May 19, 2016
  7. May 18, 2016
  8. May 17, 2016
Loading