Skip to content
Snippets Groups Projects
Commit 05776431 authored by inso's avatar inso
Browse files

Test bug #614

parent 140323c1
No related branches found
No related tags found
No related merge requests found
ALTER TABLE blockchains RENAME TO TempOldBlockchains;
-- BLOCKCHAIN TABLE
CREATE TABLE IF NOT EXISTS blockchains (
c FLOAT(1, 6),
dt INT,
ud0 INT,
sig_period INT,
sig_stock INT,
sig_window INT,
idty_window INT,
ms_window INT,
sig_validity INT,
sig_qty INT,
xpercent FLOAT(1, 6),
ms_validity INT,
step_max INT,
median_time_blocks INT,
avg_gen_time INT,
dt_diff_eval INT,
percent_rot FLOAT(1, 6),
ud_time_0 INT,
ud_effective_time_0 INT,
dt_effective INT,
current_buid INT,
current_members_count INT,
current_mass INT,
median_time INT,
last_members_count INT,
last_ud INT,
last_ud_base INT,
last_ud_time INT,
previous_mass INT,
previous_members_count INT,
previous_ud INT,
previous_ud_base INT,
previous_ud_time INT,
currency VARCHAR(30),
PRIMARY KEY (currency)
);
INSERT INTO blockchains (c,
dt,
ud0,
sig_period,
sig_stock,
sig_window,
idty_window,
ms_window,
sig_validity,
sig_qty,
xpercent,
ms_validity,
step_max,
median_time_blocks,
avg_gen_time,
dt_diff_eval,
percent_rot,
ud_time_0,
ud_effective_time_0,
dt_effective,
current_buid,
current_members_count,
current_mass,
median_time,
last_members_count,
last_ud,
last_ud_base,
last_ud_time,
previous_mass,
previous_members_count,
previous_ud,
previous_ud_base,
previous_ud_time,
currency)
SELECT c,
dt,
ud0,
sig_period,
sig_stock,
sig_window,
idty_window,
ms_window,
sig_validity,
sig_qty,
xpercent,
ms_validity,
step_max,
median_time_blocks,
avg_gen_time,
dt_diff_eval,
percent_rot,
0,
0,
0,
current_buid,
current_members_count,
current_mass,
median_time,
last_members_count,
last_ud,
last_ud_base,
last_ud_time,
previous_mass,
previous_members_count,
previous_ud,
previous_ud_base,
previous_ud_time,
currency FROM TempOldBlockchains;
DROP TABLE TempOldBlockchains;
\ No newline at end of file
......@@ -62,15 +62,16 @@ class SakiaDatabase:
def upgrades(self):
return [
self.create_all_tables,
self.add_ud_rythm_parameters
]
def upgrade_database(self):
def upgrade_database(self, to=0):
"""
Execute the migrations
"""
self._logger.debug("Begin upgrade of database...")
version = self.version()
nb_versions = len(self.upgrades)
nb_versions = to if to else len(self.upgrades)
for v in range(version, nb_versions):
self._logger.debug("Upgrading to version {0}...".format(v))
self.upgrades[v]()
......@@ -88,6 +89,16 @@ class SakiaDatabase:
with self.conn:
self.conn.executescript(sql_file.read())
def add_ud_rythm_parameters(self):
"""
Init all the tables
:return:
"""
self._logger.debug("Add ud rythm parameters to blockchains table")
sql_file = open(os.path.join(os.path.dirname(__file__), '000_add_ud_rythm_parameters.sql'), 'r')
with self.conn:
self.conn.executescript(sql_file.read())
def version(self):
with self.conn:
c = self.conn.execute("SELECT * FROM meta WHERE id=1")
......
......@@ -209,6 +209,7 @@ class NetworkTableModel(QAbstractTableModel):
self.beginRemoveRows(QModelIndex(), i, i)
self.nodes_data.pop(i)
self.endRemoveRows()
return
def rowCount(self, parent):
return len(self.nodes_data)
......
......@@ -39,6 +39,8 @@ class UserInformationController(QObject):
dialog.setWindowTitle("Informations")
user_info = cls.create(parent, app, identity)
user_info.view.setParent(dialog)
dialog.setLayout(QVBoxLayout(dialog))
dialog.layout().addWidget(user_info.view)
user_info.refresh()
dialog.exec()
......
......@@ -116,7 +116,7 @@ class NetworkService(QObject):
def continue_crawling(self):
return self._must_crawl
def _check_nodes_sync(self, node):
def check_nodes_sync(self, node):
"""
Check nodes sync with the following rules :
1 : The block of the majority
......@@ -268,7 +268,7 @@ class NetworkService(QObject):
node_connector = self.sender()
if node_connector.node.state in (Node.ONLINE, Node.DESYNCED):
node_connector.node = self._check_nodes_sync(node_connector.node)
node_connector.node = self.check_nodes_sync(node_connector.node)
self._processor.update_node(node_connector.node)
self.node_changed.emit(node_connector.node)
......
......@@ -37,7 +37,7 @@ def event_loop():
@pytest.fixture
def meta_repo():
def meta_repo(version=0):
sqlite3.register_adapter(BlockUID, str)
sqlite3.register_adapter(bool, int)
sqlite3.register_converter("BOOLEAN", lambda v: bool(int(v)))
......@@ -47,7 +47,7 @@ def meta_repo():
BlockchainsRepo(con), CertificationsRepo(con), TransactionsRepo(con),
NodesRepo(con), SourcesRepo(con), DividendsRepo(con))
meta_repo.prepare()
meta_repo.upgrade_database()
meta_repo.upgrade_database(version)
return meta_repo
......
This diff is collapsed.
import pytest
import os
from duniterpy.documents import block_uid
from sakia.data.entities import Node
from sakia.data.processors import NodesProcessor
@pytest.mark.asyncio
async def test_bug_614(application_with_one_connection, fake_server, bob, alice):
sql_file = open(os.path.join(os.path.dirname(__file__), 'bug614.sql'), 'r')
with application_with_one_connection.db.conn:
application_with_one_connection.db.conn.executescript(sql_file.read())
application_with_one_connection.network_service.check_nodes_sync(None)
nodes = NodesProcessor.instanciate(application_with_one_connection).nodes("test_currency")
for n in [node for node in nodes
if node.current_buid == block_uid("9325-000031D0C7F53E4D8E35CAD22A11EAA99232F7FC79A2C12F25BF46330136FDB8")]:
assert n.state == Node.ONLINE
await fake_server.close()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment