don't stop believing

blockchain 테스트에 사용한 python 함수 - getRequestId 본문

Python/Basic

blockchain 테스트에 사용한 python 함수 - getRequestId

Tongchun 2018. 12. 17. 16:15

blockchain 테스트에 사용한 python 함수를 설명합니다.

  • getDateStrings - 날짜 - 년, 월, 일, 시, 분, 초를 확인하는 함수입니다.
  • getLogfileNameWithPath - 로그 기록을 위해 폴더를 생성하고 경로를 반환합니다.
  • getRequestId - ramdom으로 숫자를 반환합니다.
  • moveFile - 특정 파일을 로그 폴더로 이동시킵니다.
  • saveResultData - 데이터를 파일에 저장합니다.
  • convertToHex - String을 hex로 변환합니다.
  • leftPad64 - 왼쪽에 (또는 오른쪽에) 0을 채워 고정된 길이로 만듭니다.
  • getTestConfig - json 형태의 config 파일을 만들고 불러옵니다.
  • waitingCount - time.sleep() 할 때 동적으로 카운트를 셉니다.
  • callRPC - requests 모듈을 사용해 http API를 호출합니다.
  • callWS - websocket 모듈을 사용해 API 통신을 합니다.


일반적인 RESTful API 호출 시 request에 id를 넣게되는 경우가 있습니다. response에 request때 보낸 id가 그대로 전달되며 id를 비교해서 요청한 request에 대한 response인지를 확인하게 됩니다.


Ethereum의 RPC API를 예로들면 아래와 같습니다.

// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":83}'

// Result
{
  "id":83,
  "jsonrpc": "2.0",
  "result": "0xc94" // 1207
}

curl을 이용해 보낸 request에 id는 83입니다.

response로 받은 json 데이터의 id에는 request로 보낸 83이 그대로 전달됩니다.


id를 처리하기 위해 간단하게 random 함수로 1에서 99까지 리턴되는 함수를 만들었습니다.

# coding=utf-8
import random

class nGleUtils():

	def getRequestId(self):
		'''
		API 호출 시 request data 중 id에 넣을 int 데이터를 1부터 99중 랜덤으로 선택합니다.
		'''
		return random.randint(1,100)



if __name__== "__main__":
	ngle = nGleUtils()

	requestId = ngle.getRequestId()

	print(requestId)

간단한 random 함수입니다.



Comments