mirror of
https://github.com/logos-blockchain/logos-blockchain-specs.git
synced 2026-01-07 15:43:07 +00:00
Make easy tests
This commit is contained in:
parent
5dedab1d2f
commit
8bcbce83e1
79
.gitignore
vendored
79
.gitignore
vendored
@ -1,79 +0,0 @@
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
|
||||
# AWS User-specific
|
||||
.idea/**/aws.xml
|
||||
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# Gradle and Maven with auto-import
|
||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||
# since they will be recreated, and may cause churn. Uncomment if using
|
||||
# auto-import.
|
||||
# .idea/artifacts
|
||||
# .idea/compiler.xml
|
||||
# .idea/jarRepositories.xml
|
||||
# .idea/modules.xml
|
||||
# .idea/*.iml
|
||||
# .idea/modules
|
||||
# *.iml
|
||||
# *.ipr
|
||||
|
||||
# CMake
|
||||
cmake-build-*/
|
||||
|
||||
# Mongo Explorer plugin
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# File-based project format
|
||||
*.iws
|
||||
|
||||
# IntelliJ
|
||||
out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# SonarLint plugin
|
||||
.idea/sonarlint/
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.serpython
|
||||
python
|
||||
venv
|
||||
@ -190,9 +190,11 @@ class Carnot:
|
||||
|
||||
def receive_block(self, block: Block):
|
||||
assert block.parent() in self.safe_blocks
|
||||
# This condition is not needed because it will be true as qc of a block will hve lower view than
|
||||
#the block.
|
||||
# if block.qc.view < self.current_view:
|
||||
# return
|
||||
|
||||
if block.qc.view < self.current_view:
|
||||
return
|
||||
if block.id() in self.safe_blocks or block.view <= self.latest_committed_view:
|
||||
return
|
||||
|
||||
|
||||
@ -16,7 +16,8 @@ class TestCarnotHappyPath(TestCase):
|
||||
block = Block(view=1, qc=StandardQc(block=genesis_block.id(), view=0))
|
||||
carnot.receive_block(block)
|
||||
|
||||
def test_receive_block_has_old_qc(self):
|
||||
|
||||
def test_receive_multiple_blocks_for_the_same_view(self):
|
||||
carnot = Carnot(int_to_id(0))
|
||||
genesis_block = self.add_genesis_block(carnot)
|
||||
# 1
|
||||
@ -30,4 +31,41 @@ class TestCarnotHappyPath(TestCase):
|
||||
# 3
|
||||
block3 = Block(view=3, qc=StandardQc(block=block2.id(), view=2))
|
||||
carnot.receive_block(block3)
|
||||
# 4
|
||||
block4 = Block(view=4, qc=StandardQc(block=block3.id(), view=3))
|
||||
carnot.receive_block(block4)
|
||||
|
||||
# This test seem to fail because safe_block dict checks for id of
|
||||
#the block and we can receive blocks with different ids for the same view.
|
||||
# There must be only one block per view at most.
|
||||
# May be we have a dict with view as key and dict[block.id()]block as value?
|
||||
block5 = Block(view=4, qc=StandardQc(block=block3.id(), view=3))
|
||||
carnot.receive_block(block5)
|
||||
|
||||
|
||||
def test_receive_block_has_old_view_number(self):
|
||||
carnot = Carnot(int_to_id(0))
|
||||
genesis_block = self.add_genesis_block(carnot)
|
||||
# 1
|
||||
block1 = Block(view=1, qc=StandardQc(block=genesis_block.id(), view=0))
|
||||
carnot.receive_block(block1)
|
||||
|
||||
# 2
|
||||
block2 = Block(view=2, qc=StandardQc(block=block1.id(), view=1))
|
||||
carnot.receive_block(block2)
|
||||
|
||||
# 3
|
||||
block3 = Block(view=3, qc=StandardQc(block=block2.id(), view=2))
|
||||
carnot.receive_block(block3)
|
||||
# 4
|
||||
block4 = Block(view=4, qc=StandardQc(block=block3.id(), view=3))
|
||||
carnot.receive_block(block4)
|
||||
|
||||
# 5 This is the old standard qc of block number 3. For standarnd QC we must always have qc.view==block.view-1.
|
||||
# This block should be rejected based on the condition below in block_is_safe().
|
||||
# block.view >= self.latest_committed_view and block.view == (standard.view + 1)
|
||||
# block_is_safe() should return false.
|
||||
block5 = Block(view=3, qc=StandardQc(block=block4.id(), view=4))
|
||||
carnot.receive_block(block5)
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user