|
@@ -0,0 +1,77 @@
|
|
|
|
+# frozen_string_literal: true
|
|
|
|
+
|
|
|
|
+class BenchmarksController < ApplicationController
|
|
|
|
+ ALL_DB_IDS = (1..10_000).to_a
|
|
|
|
+ FORTUNES_TEMPLATE = ERB.new(Rage.root.join("app/views/fortunes.html.erb").read)
|
|
|
|
+
|
|
|
|
+ before_action do
|
|
|
|
+ headers["server"] = "rage"
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ def json
|
|
|
|
+ render json: { message: "Hello, World!" }
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ def plaintext
|
|
|
|
+ render plain: "Hello, World!"
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ def db
|
|
|
|
+ render json: World.find(random_id)
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ def queries
|
|
|
|
+ records = requested_ids.map do |id|
|
|
|
|
+ World.find(id)
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ render json: records
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ def fortunes
|
|
|
|
+ records = Fortune.pluck(:id, :message).map! { |id, message| { id:, message: } }
|
|
|
|
+
|
|
|
|
+ records << Fortune.new(id: 0, message: "Additional fortune added at request time.")
|
|
|
|
+ records.sort_by! { |record| record[:message] }
|
|
|
|
+
|
|
|
|
+ render plain: FORTUNES_TEMPLATE.result(binding)
|
|
|
|
+ headers["content-type"] = "text/html; charset=utf-8"
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ def updates
|
|
|
|
+ records = requested_ids.map do |id|
|
|
|
|
+ World.find(id)
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ updates = records.map do |record|
|
|
|
|
+ new_value = random_id
|
|
|
|
+ new_value = random_id until new_value != record.randomNumber
|
|
|
|
+
|
|
|
|
+ record.randomNumber = new_value
|
|
|
|
+
|
|
|
|
+ { id: record.id, randomnumber: new_value }
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ World.upsert_all(updates.sort_by! { |u| u[:id] })
|
|
|
|
+
|
|
|
|
+ render json: records
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ private
|
|
|
|
+
|
|
|
|
+ def requested_ids
|
|
|
|
+ num = params[:queries].to_i
|
|
|
|
+
|
|
|
|
+ if num > 500
|
|
|
|
+ num = 500
|
|
|
|
+ elsif num < 1
|
|
|
|
+ num = 1
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ ALL_DB_IDS.sample(num)
|
|
|
|
+ end
|
|
|
|
+
|
|
|
|
+ def random_id
|
|
|
|
+ Random.rand(9_999) + 1
|
|
|
|
+ end
|
|
|
|
+end
|