Sha256: 8f5fdb7703b800b4143aeba7335b3239652c920faa737e5c38d01e1848398add

Contents?: true

Size: 1.56 KB

Versions: 17

Compression:

Stored size: 1.56 KB

Contents

require 'json'
require 'rest_client'
require 'uri'

module Rhoconnect
  # register the adapter as pre-defined
  Rhoconnect.register_predefined_source('RhoInternalBenchmarkAdapter')
  
  class RhoInternalBenchmarkAdapter < Rhoconnect::SourceAdapter
     def initialize(source) 
       super(source)
     end

     def login
       true
     end

    def query(params=nil)
      if @source.simulate_time > 0
        #for i in 1..10
        #  RestClient.get('www.google.com')
        #end
        sleep @source.simulate_time
      end
      Rhoconnect::Store.lock(lock_name,1) do
        @result = Rhoconnect::Store.get_data(db_name)
      end
      @result
    end

    def create(create_hash)
      id = create_hash['mock_id']
      Rhoconnect::Store.lock(lock_name,1) do
        Rhoconnect::Store.put_data(db_name,{id=>create_hash},true) if id
      end
      id
    end

    def update(update_hash)
      id = update_hash.delete('id')
      return unless id
      Rhoconnect::Store.lock(lock_name,1) do
        data = Rhoconnect::Store.get_data(db_name)
        return unless data and data[id]
        update_hash.each do |attrib,value|
          data[id][attrib] = value
        end
        Rhoconnect::Store.put_data(db_name,data)
      end
    end

    def delete(delete_hash)
      id = delete_hash.delete('id')
      Rhoconnect::Store.lock(lock_name,1) do
        Rhoconnect::Store.delete_data(db_name,{id=>delete_hash}) if id
      end
    end

    def db_name
      "test_db_storage:#{@source.app_id}:#{@source.user_id}"
    end

    def lock_name
      "lock:#{db_name}"
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
rhoconnect-3.3.6 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.3.5 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.3.4 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.3.3 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.3.2 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.3.1 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.3.1.beta4 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.3.1.beta3 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.3.1.beta2 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.2.1 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.2.0 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.2.0.beta5 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.2.0.beta4 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.2.0.beta3 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.2.0.beta2 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.2.0.beta1 lib/rhoconnect/predefined_adapters/bench_adapter.rb
rhoconnect-3.1.2 lib/rhoconnect/predefined_adapters/bench_adapter.rb