Skip to content

Commit

Permalink
feat: add block_propagation_delay_history
Browse files Browse the repository at this point in the history
  • Loading branch information
shaojunda committed May 12, 2020
1 parent 09c7643 commit 8cf7293
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
24 changes: 23 additions & 1 deletion app/models/distribution_data.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
class DistributionData
VALID_INDICATORS = %w(address_balance_distribution block_time_distribution epoch_time_distribution epoch_length_distribution average_block_time nodes_distribution).freeze
VALID_INDICATORS = %w(address_balance_distribution block_time_distribution epoch_time_distribution epoch_length_distribution average_block_time nodes_distribution block_propagation_delay_history).freeze

def id
Time.current.to_i
Expand Down Expand Up @@ -28,4 +28,26 @@ def average_block_time
def nodes_distribution
DailyStatistic.order(created_at_unixtimestamp: :desc).first&.nodes_distribution || DailyStatistic.where.not(nodes_distribution: nil).order(created_at_unixtimestamp: :desc).first&.nodes_distribution || []
end

def block_propagation_delay_history
round_num = 4
sql =
<<-SQL
select created_at_unixtimestamp,
round(avg((durations->>0)::numeric), #{round_num}) avg5, round(avg((durations->>1)::numeric), #{round_num}) avg10,
round(avg((durations->>2)::numeric), #{round_num}) avg15, round(avg((durations->>3)::numeric), #{round_num}) avg20,
round(avg((durations->>4)::numeric), #{round_num}) avg25, round(avg((durations->>5)::numeric), #{round_num}) avg30,
round(avg((durations->>6)::numeric), #{round_num}) avg35, round(avg((durations->>7)::numeric), #{round_num}) avg40,
round(avg((durations->>8)::numeric), #{round_num}) avg45, round(avg((durations->>9)::numeric), #{round_num}) avg50,
round(avg((durations->>10)::numeric), #{round_num}) avg55, round(avg((durations->>11)::numeric), #{round_num}) avg60,
round(avg((durations->>12)::numeric), #{round_num}) avg65, round(avg((durations->>13)::numeric), #{round_num}) avg70,
round(avg((durations->>14)::numeric), #{round_num}) avg75, round(avg((durations->>15)::numeric), #{round_num}) avg80,
round(avg((durations->>16)::numeric), #{round_num}) avg85, round(avg((durations->>17)::numeric), #{round_num}) avg90
from block_propagation_delays
group by created_at_unixtimestamp
order by created_at_unixtimestamp
SQL

BlockPropagationDelay.connection.select_all(sql)
end
end
6 changes: 6 additions & 0 deletions app/serializers/distribution_data_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,10 @@ class DistributionDataSerializer
} do |object|
object.nodes_distribution
end

attribute :block_propagation_delay_history, if: Proc.new { |_record, params|
params && params[:indicator].include?("block_propagation_delay_history")
} do |object|
object.block_propagation_delay_history
end
end

0 comments on commit 8cf7293

Please sign in to comment.