Closed tkdlqm2 closed 3 years ago
Feedback : 사용자 단에서 오버헤드를 줄이기 위한 디자인
Before : test.py 에 filter log list를 하드코딩 식으로 디자인 After : test.py에서 컨트롤 하지 않고, txt 파일로 컨트롤 할 수 있게함. 즉 filter log list가 담긴 파일을 읽어와 로직을 수행하는 것.
가정) litecoin에 대해 실행 결과 파일이 제대로 동작하였나 테스팅 하고 싶은 상황.
regtest/shadow-litecoin/ 경로에 다음 파일을 저장 시킴.
위에 그림 처럼 txt 파일로 standard log data를 추가하여, 소스코드를 하드코딩하는 방식이 아닌, 하드코딩할 데이터를 파일로 만들어 파일을 읽는 식으로 하여 진행하도록 디자인함.
unit test 에 대해 test case와 example 만들기.
TDD 방법론을 활용한 unit test case 만들기.
필요없는 regression test들을 일단 정리하고자 한다. #125 와도 관련이 있다.
release 0.1.0에 포함시킬 feature(P2P library module, sybil attack test, bitcoin)에 관련된 test말고는 우선 정리하도록 한다.
삭제해야할 regtest list
체크 필요한 regtest list
체크 필요한 regtest들은 현재 제대로 동작하는지를 체크하고, 만일 제대로 동작하고 release 0.1.0에 포함될만한 테스트라면 간략하게 어떤 부분을 테스트하며 테스트 입력값, 결과값이 무엇인지에 대한 주석을 달도록 한다.
release 0.1.0 feature에 대한 test case 구현이 필요하다.
우선 release 0.1.0에서는 하나의 블록체인 노드를 에뮬레이션시키는 것을 지원하고, 해당 노드에 대한 1) dummy transaction 주입 기능 2) 노드가 블록체인화 시킬 수 있는 transaction 수에 대한 maximum throughput 측정 기능 3) 노드에 대한 가상의 sybil 네트워크의 구축 및 eclipse 공격 수행 기능 을 제공하는 것을 목표로 한다.
위의 1,2번 기능을 위해서는 transaction을 생성하기 위한 initial coin의 생성이 전제되어야 한다.
따라서 initial coin 생성 루틴을 수행하고, 결과적으로 initial coin이 제대로 생성되었는지 판단해주는 test case를 구현하고자 한다.
향후 여러가지 블록체인을 지원할 수 있는 형태로 initial coin 생성 루틴을 디자인하고 테스트하는 것이 바람직하겠지만, 우선 release 0.1.0에서 지원할 예정인 블록체인은 bitcoin 0.19.1 버젼뿐이므로, bitcoin 0.19.1이 동작한다고 가정하도록 한다.
우선 위의 두 이슈 (#196, #197)까지 작업후 develop에 병합시키면 될 듯 합니다. (병합 후에도 이 이슈 브랜치를 지울 필요는 없음)
release 0.1.0 feature에 대한 test case 중 bitcoin 채굴 난이도 조정에 대한 구현이 필요함.
release 0.1.0 feature에 대한 test case 중 bitcoin Initial coin에 대한 구현이 필요함.
release 0.1.0 feature에 대한 test case 중 Transactions generator 에 대한 구현이 필요함.
release 0.1.0 feature에 대한 test case 중 bitcoin node 실행에 대한 구현이 필요함.
test 형상관리 브렌치에 bitcoin 외에 다른 블록체인들 정리.
release 0.1.0 features
rel 0.1 test 형상관리를 마무리를 하였습니다.
xmlGenerate test -> xml 파일을 만들 경로에, tx injector shared object가 없으면, tx_mode는 disable로만 생성할 수 있게 만듬.
shadow output test -> disable 모드만 실행 가능. -> 문제 없음.
blockchainApplication test -> disable 모드만 실행 가능. -> 문제없음.
difficulty -> disable 모드만 실행 가능. -> 난이도는 (1/2/3) 이 있으며, 현재 1(mainnet), 3(testnet)에 대해서는 문제없이 test가 동작함. 하지만 2(mainnet - testnet의 중단 난이도)는 기능적으로 중간 난이도에 해당하지는 않음.
walletAddress -> disable 모드만 실행 가능. -> 문제 없음.
mining -> disable 모드만 실행 가능. -> 문제 없음.
mainchain test -> disable 모드만 실행 가능. -> 문제없음.
transaction test -> enable 모드만 실행 가능. -> 문제없음. 다만 10번 test의 initial block 100개가 셋팅되기 위한 시간인 50초임으로 50초 미만으로 시뮬레이션 시간을 설정하면 에러 발생함. (에러내용 : 트랜잭션 생성 실패.)
transaction count -> enable 모드만 실행 가능. -> 문제없음. 다만 10번 test의 initial block 100개가 셋팅되기 위한 시간인 50초임으로 50초 미만으로 시뮬레이션 시간을 설정하면 에러 발생함. (에러내용 : 트랜잭션 생성 실패.)
initial coin -> disable 모드만 실행 가능. -> initial block 100개를 생성하는데 필요한 시뮬레이션 시간은 대략 50초 정도임.
[How to reproduce]
git checkout issue/212
빨강 : Input data 노랑 : print result
xmlGenerate test
shadow test
bitcoinApplication test
difficulty test
wallet test
mining test
mainchain test
transaction test
transcation count test
Initial coin test
Descirption: BLEEP test 형상관리 issue branch
Goal:
How to reproduce :