mirror of
https://github.com/planetmint/planetmint.git
synced 2025-03-30 15:08:31 +00:00

* assets changes * fixed init db code Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed some other test cases Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * Fixed 1/3 from test_queries.py * test_queries.py ALL PASSED * removed junk comment * test_schema.py fixed * added funcationilty to init a DB in case it hasn't been initialized before Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed test_schema.py * last commit * fixed some minor bugs Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * test_schema.py ALL PASSING + changes in TarantoolDB Class * test_schema.py ALL PASSING + changes in TarantoolDB Class * commit err * fixed asset issues Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed assets handling Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed missing Config().get() migrations Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed unit test error in case tx id is not defined Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed some minor bugs Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * simplified return of metadata Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * reconnect function added to reset_database if statement * removed some print * fixed TX compose bug about threshold information Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed usage of from_db part 1 Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed tarantool/tendermint status management Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed some backend init issues and error handling Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed output public_keys order bug Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed deepcopy bug and another small assignment bug Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * s * fixed last asset bug Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * merge * fixed another set of tests Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed test_core.py by converting dict transaction to Transaction Object * fixed delete_transaction function Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * commit * pre_commit_state singledispatch issue * fixed global variable of backend * fixed backend problem with command make tests * args_reset_db added, fixed error with incorrect handling of kwargs * test_validator passing * fixed test_core.py by adding HDict in saved_key_orders function * fixed pre_commiT-state bug * init chain recoginez function fixed . * fixed last error from tendermint/test_core.py * tendermint/test_core.py all passing * fixed function from fast_query.py, problem was in deleteting functions * fixed error from test_fastquery.py, by chaning the algorithm of verifying returnred transactions id * fixed test_core.py by adding HDict in saved_key_orders function Signed-off-by: Sangat Das <sangatdas5@gmail.com> * Fix make test issue - unhealthy planetmint container because non-init of tarantool spaces Signed-off-by: Sangat Das <sangatdas5@gmail.com> * Fix tarantool connection issues in test Signed-off-by: Sangat Das <sangatdas5@gmail.com> * _save_keys_order, changes behaviour * hash problem fixed * separated asset test fixed * Removed all Errors in Make Test Signed-off-by: Sangat Das <sangatdas5@gmail.com> * mock error solved * mock solved * problem with stdout from Popen * fixed output from calling subprocess * Now planetmint drop and planemint init, is working throught schema.py file. * Fixed some lib and web issues Signed-off-by: Sangat Das <sangatdas5@gmail.com> * test_lib test_update_utxoset passing * test_commands.py -> all tests are passing * test_queries.py -> fixed * rollback my changes * fixed test_quries.py -> problem with assets * test_quries.py -> metadata error fixed * test_bigchain_api -> fixed by adding ErrorHandling for Tarantool operation * test_bigchain_api * test_integration.py -> fixed issue with block object * test_lib.py -> fixed * store and get utxo fixed * NoneType error, fixed in test_lib.py * test_lib.py fixed error, adopting verification for tarantool * test_lib.py fixed one more function * test_store_bulk_transaction -> adopted for tarantool * test_store_transaction -> changed to work with tarantool * test_asset_is_separated_from_transaciton -> skipped for Tarantool connection type * Fixed 4 issues in test/tendermint Signed-off-by: Sangat Das <sangatdas5@gmail.com> * fixed merge issues Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed last misspelling of backend config Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * test_block_tendermint.py -> solved by returning empty list if not found * readded test_core tests, fixed some linter issues Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * last changes * removed test fixture * removed planetmint_env folder Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * .idea/ added to gitignore file * removed .idea/ folder from project * create 3 files. init: indexes, schema, tables(spaces). this is used for initializing space,index and schema separately, and getting an output for specific command * added to schema all execute commands in dictionary format * Added create_tables function for tarantool connection * 'create_database' function from schema file, is ignored using TarantoolDB Class. * Implemented planetmint init via schema.py ! * added execute drop commands for spaces * drop_databases improved * Removed .lua files that was created temporarily. * replaced TarantoolDB with TarantoolDBConnection Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * Added output to console for creating indexes. * fixed connection instantiation Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * Added exception for NetworkError, to get specific error from connection class. * _setup_database fixture restored.(STILL NOT WORKING in this commit) * added 'universe' name as database name for tarantool * created flush_db for tarantool connection type * function create_database will call create_tables only for tarantool connection * _bdb, setup_database restored as it was before * Fixed flush_dbtarantool * Fixed fatal crashing at beginning of starting planetmint. problem was solved by returning None value if where is no space. * adding try except to some queries from tarantool/query.py. * implemented decorator for running queries in try catch * removed import of interface * Removed print + removed import of interface directly * removed importing of interface * fixed some imports, refactored TarantoolDBConnection.conn handling Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added new requirement to setup.py * added query() method, that will return Lazy Object * removed unecessary comments from connection class * get_space method is the same as old space method. * Added run() method to TarantoolDBConnection Class. * tarantool/query.py changed for using Lazy() implementation + little changes * queries from tarantool/query.py was adjusted to not get NonType error * adjusted some function calls, and connection calls Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixes for error NoneType * fix for flush function (freezing of pytest) + NoneType error * store_transactions changed to use new format of query * Changed from .space() method to .get_space() * putted from new line * fixed Lazy() has no len * adjusted _group_transaction_by_ids and store_transactions for connection.run Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed .data from select queries Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed run_command_without_output config and removed faulty error handling Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * made rollback db agnostic * Added assign for pre_commit * resolved comments and clean-up of unused code * Fixed no attribute .run(). Fixed | Fixed no attribute .data * Fixed no atribute .data * Fixed list has no attribute .data * Removed comments * Fixed flush_db_tarantool, not it removes also from blocks spaces * Fixed test_queries.py PASSED * Fixed SystemExit error by inversing sorting of array * Cleaned up test_core.py * fixed upsert() functions, incorrect behaviour * removed unused print * removed unused print (2) * Fixed test_txlist.py by improving flush_db_tarantool * Small fixes in .upsert() functions for tarantool_db * Fixes some test cases in tendermint/test_lib.py * Fixed flush_tarantool_db Function. * added utxos to SPACE_NAMES to delete data from utxo space * fixed this module by restoring original function instructions. * added hash generation to create primary key for abci_chain tuple. * Added field 'id' to abci_chains * changed flush function to delete abci_chains tuples * added indexed_pattern_search to basic lua, implemented text_search Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * adjusted some queries, wip print statements to be removed Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed get_metadata Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added some prints and simplified code Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed __asset_check Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed print statements Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added limit to text_Search Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * Planetmint tarantool (#152) * added indexed_pattern_search to basic lua, implemented text_search Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * adjusted some queries, wip print statements to be removed Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed get_metadata Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added some prints and simplified code Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed __asset_check Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed print statements Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added limit to text_Search Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * adjusted store_asset behaviour to match mongodb implementation Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed test_write_metadata test case Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed pattern search for meta_data Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed text_search result conversion Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * adjusted connect config error handling and test case for new signature Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * Resolved issues related to key error * Added convert.py for storing interfaces * Added convert.py implementation for tarantool * Implemented to lib.py, functions from converted.py * Added initializing for convert.py * init of convert.py for mongodb implementation * implemented convert.py for mongodatabase [NOT TESTED] * adjusted get_assets and from_db for tarantool Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added comment Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fix get_assets issue (#160) * adjusted get_assets and from_db for tarantool Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added comment Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * resolve conflicts * docker all in one now install tarantool Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added user to integration init.lua Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * updated integration test setup for tarantool Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed print statements Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * updated changelog Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed error messaging Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed exception verification Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed printing of testdata Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * Planetmint tarantool (#169) * 31 restructue documentation (#138) * removed korean documentation Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * removed CN and KOR readme Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * changed to the press theme Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * first changes Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixe H3 vs H1 issues Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added missing png Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added missing file Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed warnings Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * moved documents Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * removed obsolete files Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * removed obsolete folder Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * removed obs. file Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added some final changes Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * removed obs. reference Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * moved chain migration to election types (#109) Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * Final zenroom (#147) * zenroom fixes Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * expl. defined the aiohttp package Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * increased version number and fixed a zenroom runtime bug Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added fialing zenroom tx signing test Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * extended test to pass zenrooom validation, but to fail planetmint validation. Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added manual tx crafting Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added zenroom fulfillment verification Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * the last mile before integration Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * zenroom unit tests are passing Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * simplified zenroom unit tests Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * removed obsolte lines from the zenroom tests Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed acceptance tests Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * adjusted zenroom integraiton tests Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed linting errors Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * simplified zenroom unit test Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * increased version number Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * using cryptoconditions without print message Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * increased cc usage to 0.9.9 readded daemon proceses Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * increased version to 0.9.6 Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed deployment issue for 0.9.6 Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * adjusted get_assets and from_db for tarantool Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added comment Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * improve usability of zenroom (#159) * improve usability of zenroom * * increased version * fixed test cases * added changelog Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> Co-authored-by: Jürgen Eckel <juergen@riddleandcode.com> * migrated to AGPLv3 Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * 150 add cryptoconditions documentation (#166) * added smaller logos fixed reference issue Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed some erros and typos Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added cryptoconditions reference to the subproject Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * docker all in one now install tarantool Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added user to integration init.lua Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * updated integration test setup for tarantool Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed print statements Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * updated changelog Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed error messaging Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed exception verification Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed printing of testdata Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> Co-authored-by: Jürgen Eckel <eckelj@users.noreply.github.com> Co-authored-by: Lorenz Herzberger <64837895+LaurentDeMontBlanc@users.noreply.github.com> Co-authored-by: Alberto Lerda <30939098+albertolerda@users.noreply.github.com> Co-authored-by: Jürgen Eckel <juergen@riddleandcode.com> * Removing naughty strings test cases * updated quickstart with tarantool installation Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * updated all-in-one-planetmint with tarantool port and data persistence Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed typo Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * update documentation about tarantool (#174) * 31 restructue documentation (#138) * removed korean documentation Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * removed CN and KOR readme Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * changed to the press theme Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * first changes Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixe H3 vs H1 issues Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added missing png Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added missing file Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed warnings Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * moved documents Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * removed obsolete files Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * removed obsolete folder Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * removed obs. file Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added some final changes Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * removed obs. reference Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * moved chain migration to election types (#109) Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * Final zenroom (#147) * zenroom fixes Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * expl. defined the aiohttp package Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * increased version number and fixed a zenroom runtime bug Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added fialing zenroom tx signing test Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * extended test to pass zenrooom validation, but to fail planetmint validation. Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added manual tx crafting Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added zenroom fulfillment verification Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * the last mile before integration Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * zenroom unit tests are passing Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * simplified zenroom unit tests Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * removed obsolte lines from the zenroom tests Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed acceptance tests Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * adjusted zenroom integraiton tests Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed linting errors Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * simplified zenroom unit test Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * increased version number Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * using cryptoconditions without print message Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * increased cc usage to 0.9.9 readded daemon proceses Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * increased version to 0.9.6 Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed deployment issue for 0.9.6 Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * adjusted get_assets and from_db for tarantool Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added comment Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * improve usability of zenroom (#159) * improve usability of zenroom * * increased version * fixed test cases * added changelog Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> Co-authored-by: Jürgen Eckel <juergen@riddleandcode.com> * migrated to AGPLv3 Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * 150 add cryptoconditions documentation (#166) * added smaller logos fixed reference issue Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed some erros and typos Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added cryptoconditions reference to the subproject Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * docker all in one now install tarantool Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added user to integration init.lua Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * updated integration test setup for tarantool Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed print statements Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * updated changelog Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed error messaging Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed exception verification Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed printing of testdata Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * updated quickstart with tarantool installation Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * updated all-in-one-planetmint with tarantool port and data persistence Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed typo Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> Co-authored-by: Jürgen Eckel <eckelj@users.noreply.github.com> Co-authored-by: Lorenz Herzberger <64837895+LaurentDeMontBlanc@users.noreply.github.com> Co-authored-by: Alberto Lerda <30939098+albertolerda@users.noreply.github.com> Co-authored-by: Jürgen Eckel <juergen@riddleandcode.com> * Fixes lint issues (#176) * Resolved lint issues * resolved other lint issues Co-authored-by: Jürgen Eckel <juergen@riddleandcode.com> Co-authored-by: andrei <deffuls@debian-BULLSEYE-live-builder-AMD64> Co-authored-by: Sangat Das <sangatdas5@gmail.com> Co-authored-by: liviu-lesan <31960632+liviu-lesan@users.noreply.github.com> Co-authored-by: Lorenz Herzberger <64837895+LaurentDeMontBlanc@users.noreply.github.com> Co-authored-by: andreitricolici <97448537+andreitricolici@users.noreply.github.com> Co-authored-by: ArpitShukla007 <arpitnshukla@gmail.com> Co-authored-by: Jürgen Eckel <eckelj@users.noreply.github.com> Co-authored-by: Alberto Lerda <30939098+albertolerda@users.noreply.github.com>
329 lines
11 KiB
Python
329 lines
11 KiB
Python
# Copyright © 2020 Interplanetary Database Association e.V.,
|
|
# Planetmint and IPDB software contributors.
|
|
# SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0)
|
|
# Code is Apache-2.0 and docs are CC-BY-4.0
|
|
|
|
import copy
|
|
from unittest.mock import mock_open, patch
|
|
|
|
import pytest
|
|
|
|
import planetmint
|
|
from planetmint.config import Config
|
|
|
|
|
|
@pytest.fixture(scope='function', autouse=True)
|
|
def clean_config(monkeypatch, request):
|
|
original_config = Config().init_config('tarantool_db')
|
|
backend = request.config.getoption('--database-backend')
|
|
original_config['database'] = Config().get_db_map(backend)
|
|
monkeypatch.setattr('planetmint.config', original_config)
|
|
|
|
|
|
def test_bigchain_instance_is_initialized_when_conf_provided():
|
|
from planetmint import config_utils
|
|
assert 'CONFIGURED' not in Config().get()
|
|
|
|
config_utils.set_config({'database': {'backend': 'a'}})
|
|
|
|
assert Config().get()['CONFIGURED'] is True
|
|
|
|
|
|
def test_load_validation_plugin_loads_default_rules_without_name():
|
|
from planetmint import config_utils
|
|
from planetmint.validation import BaseValidationRules
|
|
|
|
assert config_utils.load_validation_plugin() == BaseValidationRules
|
|
|
|
|
|
def test_load_validation_plugin_raises_with_unknown_name():
|
|
from pkg_resources import ResolutionError
|
|
from planetmint import config_utils
|
|
|
|
with pytest.raises(ResolutionError):
|
|
config_utils.load_validation_plugin('bogus')
|
|
|
|
|
|
def test_load_validation_plugin_raises_with_invalid_subclass(monkeypatch):
|
|
# Monkeypatch entry_point.load to return something other than a
|
|
# ValidationRules instance
|
|
from planetmint import config_utils
|
|
import time
|
|
monkeypatch.setattr(config_utils,
|
|
'iter_entry_points',
|
|
lambda *args: [type('entry_point', (object,), {'load': lambda: object})])
|
|
|
|
with pytest.raises(TypeError):
|
|
# Since the function is decorated with `lru_cache`, we need to
|
|
# "miss" the cache using a name that has not been used previously
|
|
config_utils.load_validation_plugin(str(time.time()))
|
|
|
|
|
|
def test_load_events_plugins(monkeypatch):
|
|
from planetmint import config_utils
|
|
monkeypatch.setattr(config_utils,
|
|
'iter_entry_points',
|
|
lambda *args: [type('entry_point', (object,), {'load': lambda: object})])
|
|
|
|
plugins = config_utils.load_events_plugins(['one', 'two'])
|
|
assert len(plugins) == 2
|
|
|
|
|
|
def test_map_leafs_iterator():
|
|
from planetmint import config_utils
|
|
|
|
mapping = {
|
|
'a': {'b': {'c': 1},
|
|
'd': {'z': 44}},
|
|
'b': {'d': 2},
|
|
'c': 3
|
|
}
|
|
|
|
result = config_utils.map_leafs(lambda x, path: x * 2, mapping)
|
|
assert result == {
|
|
'a': {'b': {'c': 2},
|
|
'd': {'z': 88}},
|
|
'b': {'d': 4},
|
|
'c': 6
|
|
}
|
|
|
|
result = config_utils.map_leafs(lambda x, path: path, mapping)
|
|
assert result == {
|
|
'a': {'b': {'c': ['a', 'b', 'c']},
|
|
'd': {'z': ['a', 'd', 'z']}},
|
|
'b': {'d': ['b', 'd']},
|
|
'c': ['c']
|
|
}
|
|
|
|
|
|
def test_update_types():
|
|
from planetmint import config_utils
|
|
|
|
raw = {
|
|
'a_string': 'test',
|
|
'an_int': '42',
|
|
'a_float': '3.14',
|
|
'a_list': 'a:b:c',
|
|
}
|
|
|
|
reference = {
|
|
'a_string': 'test',
|
|
'an_int': 42,
|
|
'a_float': 3.14,
|
|
'a_list': ['a', 'b', 'c'],
|
|
}
|
|
|
|
result = config_utils.update_types(raw, reference)
|
|
assert result == reference
|
|
|
|
|
|
def test_env_config(monkeypatch):
|
|
monkeypatch.setattr('os.environ', {'PLANETMINT_DATABASE_HOST': 'test-host',
|
|
'PLANETMINT_DATABASE_PORT': 'test-port'})
|
|
|
|
from planetmint import config_utils
|
|
|
|
result = config_utils.env_config({'database': {'host': None, 'port': None}})
|
|
expected = {'database': {'host': 'test-host', 'port': 'test-port'}}
|
|
|
|
assert result == expected
|
|
|
|
|
|
@pytest.mark.skip
|
|
def test_autoconfigure_read_both_from_file_and_env(monkeypatch,
|
|
request): # TODO Disabled until we create a better config format
|
|
return
|
|
# constants
|
|
DATABASE_HOST = 'test-host'
|
|
DATABASE_NAME = 'test-dbname'
|
|
DATABASE_PORT = 4242
|
|
DATABASE_BACKEND = request.config.getoption('--database-backend')
|
|
SERVER_BIND = '1.2.3.4:56'
|
|
WSSERVER_SCHEME = 'ws'
|
|
WSSERVER_HOST = '1.2.3.4'
|
|
WSSERVER_PORT = 57
|
|
WSSERVER_ADVERTISED_SCHEME = 'wss'
|
|
WSSERVER_ADVERTISED_HOST = 'a.b.c.d'
|
|
WSSERVER_ADVERTISED_PORT = 89
|
|
LOG_FILE = '/somewhere/something.log'
|
|
|
|
file_config = {
|
|
'database': {
|
|
'host': DATABASE_HOST
|
|
},
|
|
'log': {
|
|
'level_console': 'debug',
|
|
},
|
|
}
|
|
|
|
monkeypatch.setattr('planetmint.config_utils.file_config',
|
|
lambda *args, **kwargs: file_config)
|
|
|
|
monkeypatch.setattr('os.environ', {
|
|
'PLANETMINT_DATABASE_NAME': DATABASE_NAME,
|
|
'PLANETMINT_DATABASE_PORT': str(DATABASE_PORT),
|
|
'PLANETMINT_DATABASE_BACKEND': DATABASE_BACKEND,
|
|
'PLANETMINT_SERVER_BIND': SERVER_BIND,
|
|
'PLANETMINT_WSSERVER_SCHEME': WSSERVER_SCHEME,
|
|
'PLANETMINT_WSSERVER_HOST': WSSERVER_HOST,
|
|
'PLANETMINT_WSSERVER_PORT': WSSERVER_PORT,
|
|
'PLANETMINT_WSSERVER_ADVERTISED_SCHEME': WSSERVER_ADVERTISED_SCHEME,
|
|
'PLANETMINT_WSSERVER_ADVERTISED_HOST': WSSERVER_ADVERTISED_HOST,
|
|
'PLANETMINT_WSSERVER_ADVERTISED_PORT': WSSERVER_ADVERTISED_PORT,
|
|
'PLANETMINT_LOG_FILE': LOG_FILE,
|
|
'PLANETMINT_LOG_FILE': LOG_FILE,
|
|
'PLANETMINT_DATABASE_CA_CERT': 'ca_cert',
|
|
'PLANETMINT_DATABASE_CRLFILE': 'crlfile',
|
|
'PLANETMINT_DATABASE_CERTFILE': 'certfile',
|
|
'PLANETMINT_DATABASE_KEYFILE': 'keyfile',
|
|
'PLANETMINT_DATABASE_KEYFILE_PASSPHRASE': 'passphrase',
|
|
})
|
|
|
|
from planetmint import config_utils
|
|
from planetmint.log import DEFAULT_LOGGING_CONFIG as log_config
|
|
config_utils.autoconfigure()
|
|
|
|
database_mongodb = {
|
|
'backend': 'localmongodb',
|
|
'host': DATABASE_HOST,
|
|
'port': DATABASE_PORT,
|
|
'name': DATABASE_NAME,
|
|
'connection_timeout': 5000,
|
|
'max_tries': 3,
|
|
'replicaset': None,
|
|
'ssl': False,
|
|
'login': None,
|
|
'password': None,
|
|
'ca_cert': 'ca_cert',
|
|
'certfile': 'certfile',
|
|
'keyfile': 'keyfile',
|
|
'keyfile_passphrase': 'passphrase',
|
|
'crlfile': 'crlfile',
|
|
}
|
|
|
|
assert planetmint.config == {
|
|
'CONFIGURED': True,
|
|
'server': {
|
|
'bind': SERVER_BIND,
|
|
'loglevel': 'info',
|
|
'workers': None,
|
|
},
|
|
'wsserver': {
|
|
'scheme': WSSERVER_SCHEME,
|
|
'host': WSSERVER_HOST,
|
|
'port': WSSERVER_PORT,
|
|
'advertised_scheme': WSSERVER_ADVERTISED_SCHEME,
|
|
'advertised_host': WSSERVER_ADVERTISED_HOST,
|
|
'advertised_port': WSSERVER_ADVERTISED_PORT,
|
|
},
|
|
'database': database_mongodb,
|
|
'tendermint': {
|
|
'host': 'localhost',
|
|
'port': 26657,
|
|
'version': 'v0.34.15'
|
|
},
|
|
'log': {
|
|
'file': LOG_FILE,
|
|
'level_console': 'debug',
|
|
'error_file': log_config['handlers']['errors']['filename'],
|
|
'level_console': 'debug',
|
|
'level_logfile': 'info',
|
|
'datefmt_console': log_config['formatters']['console']['datefmt'],
|
|
'datefmt_logfile': log_config['formatters']['file']['datefmt'],
|
|
'fmt_console': log_config['formatters']['console']['format'],
|
|
'fmt_logfile': log_config['formatters']['file']['format'],
|
|
'granular_levels': {},
|
|
},
|
|
}
|
|
|
|
|
|
def test_autoconfigure_env_precedence(monkeypatch):
|
|
file_config = {
|
|
'database': {'host': 'test-host', 'name': 'planetmint', 'port': 28015}
|
|
}
|
|
monkeypatch.setattr('planetmint.config_utils.file_config', lambda *args, **kwargs: file_config)
|
|
monkeypatch.setattr('os.environ', {'PLANETMINT_DATABASE_NAME': 'test-dbname',
|
|
'PLANETMINT_DATABASE_PORT': 4242,
|
|
'PLANETMINT_SERVER_BIND': 'localhost:9985'})
|
|
from planetmint import config_utils
|
|
from planetmint.config import Config
|
|
config_utils.autoconfigure()
|
|
|
|
assert Config().get()['CONFIGURED']
|
|
assert Config().get()['database']['host'] == 'test-host'
|
|
assert Config().get()['database']['name'] == 'test-dbname'
|
|
assert Config().get()['database']['port'] == 4242
|
|
assert Config().get()['server']['bind'] == 'localhost:9985'
|
|
|
|
|
|
def test_autoconfigure_explicit_file(monkeypatch):
|
|
from planetmint import config_utils
|
|
|
|
def file_config(*args, **kwargs):
|
|
raise FileNotFoundError()
|
|
|
|
monkeypatch.setattr('planetmint.config_utils.file_config', file_config)
|
|
|
|
with pytest.raises(FileNotFoundError):
|
|
config_utils.autoconfigure(filename='autoexec.bat')
|
|
|
|
|
|
def test_update_config(monkeypatch):
|
|
from planetmint import config_utils
|
|
|
|
file_config = {
|
|
'database': {'host': 'test-host', 'name': 'planetmint', 'port': 28015}
|
|
}
|
|
monkeypatch.setattr('planetmint.config_utils.file_config', lambda *args, **kwargs: file_config)
|
|
config_utils.autoconfigure(config=file_config)
|
|
|
|
# update configuration, retaining previous changes
|
|
config_utils.update_config({'database': {'port': 28016, 'name': 'planetmint_other'}})
|
|
|
|
assert Config().get()['database']['host'] == 'test-host'
|
|
assert Config().get()['database']['name'] == 'planetmint_other'
|
|
assert Config().get()['database']['port'] == 28016
|
|
|
|
|
|
def test_file_config():
|
|
from planetmint.config_utils import file_config, CONFIG_DEFAULT_PATH
|
|
with patch('builtins.open', mock_open(read_data='{}')) as m:
|
|
config = file_config()
|
|
m.assert_called_once_with(CONFIG_DEFAULT_PATH)
|
|
assert config == {}
|
|
|
|
|
|
def test_invalid_file_config():
|
|
from planetmint.config_utils import file_config
|
|
from planetmint.transactions.common import exceptions
|
|
with patch('builtins.open', mock_open(read_data='{_INVALID_JSON_}')):
|
|
with pytest.raises(exceptions.ConfigurationError):
|
|
file_config()
|
|
|
|
|
|
def test_write_config():
|
|
from planetmint.config_utils import write_config, CONFIG_DEFAULT_PATH
|
|
m = mock_open()
|
|
with patch('builtins.open', m):
|
|
write_config({})
|
|
m.assert_called_once_with(CONFIG_DEFAULT_PATH, 'w')
|
|
handle = m()
|
|
handle.write.assert_called_once_with('{}')
|
|
|
|
|
|
@pytest.mark.parametrize('env_name,env_value,config_key', (
|
|
('PLANETMINT_DATABASE_BACKEND', 'test-backend', 'backend'),
|
|
('PLANETMINT_DATABASE_HOST', 'test-host', 'host'),
|
|
('PLANETMINT_DATABASE_PORT', 4242, 'port'),
|
|
('PLANETMINT_DATABASE_NAME', 'test-db', 'name'),
|
|
))
|
|
def test_database_envs(env_name, env_value, config_key, monkeypatch):
|
|
|
|
monkeypatch.setattr('os.environ', {env_name: env_value})
|
|
planetmint.config_utils.autoconfigure()
|
|
|
|
expected_config = Config().get()
|
|
expected_config['database'][config_key] = env_value
|
|
|
|
assert planetmint.config == expected_config
|