sig
  module type Item =
    sig
      type t
      val dump_item : Xapi_work_queues.Item.t -> Rpc.t
      val dump_task : Xapi_work_queues.Item.t -> Rpc.t
      val execute : Xapi_work_queues.Item.t -> unit
      val finally : Xapi_work_queues.Item.t -> unit
      val should_keep :
        Xapi_work_queues.Item.t -> Xapi_work_queues.Item.t list -> bool
    end
  module type S =
    sig
      type t
      type item
      val create : int -> Xapi_work_queues.S.t
      val set_size : Xapi_work_queues.S.t -> int -> unit
      val push :
        Xapi_work_queues.S.t -> string -> Xapi_work_queues.S.item -> unit
      val dump : Xapi_work_queues.S.t list -> Rpc.t * Rpc.t
    end
  module Make :
    functor (I : Item->
      sig
        type t
        type item = I.t
        val create : int -> t
        val set_size : t -> int -> unit
        val push : t -> string -> item -> unit
        val dump : t list -> Rpc.t * Rpc.t
      end
  val tests : OUnit2.test list
end