Giter Club home page Giter Club logo

tape's Introduction

超级账本中国技术工作组

README in English

超级账本中国技术工作组是连接超级账本全球社区,大中华贡献者社区和新兴技术用户的桥梁

Antitrustnotice inclusive 我们欢迎所有人来参与TWGC的社区

在开源社区的世界里,我们总是有很多未知亟待探索和实现

TWGC 正式 wiki

常务组员 Active Members/Volunteers

名字 Github ID 所属组织 Email
郭剑南 guoger 树根互联 [email protected]
Sam Yuan SamYuan1990 IBM [email protected]
Xu Wu 吴旭 hellosmallstone 众享金联科技 [email protected]
许强 XuHugo 新华三 [email protected]
吴乔民 wuqiaomin [email protected]
万勇 wan-yong [email protected]

常务组员提名 Active Members/Volunteers Nomination

如果您愿意持续为中国工作组社区做贡献,形式包括推动会议和计划,帮助入门开发者,组织活动推广超级账本技术,贡献源码,翻译文档,我们欢迎您在邮件列表中毛遂自荐,成为常务组员

如果你已经持续地为TWGC做出贡献(超过3个月),欢迎联系工作组组长,以在邮件列表中获得提名

If you have made continuous contributions (3+ months) in TWGC , welcome to contact committee board get nominated as Active Member in the mail list

提名邮件应包括受提名人最近贡献的证据记录,贡献类型包括但不限于:

  • 发起或者加入超级账本旗下的协作计划、项目 Propose, join collaborative plan/work under Hyperledger
  • 帮助新的开发者 helping new developers
  • 组织活动 organizing events
  • 推广超级账本技术 promoting Hyperledger technologies
  • 贡献代码,文档或翻译工作 contributing code, documentations or translation work
  • 积极参加TWGC双周会讨论Actively participate in TWGC bi-weekly meeting

如果常务组员不活跃状态连续超过三个月,TWGC会考虑实施组员退休。退休的组员可以重新通过提名流程成为常务组员。

If keeping inactive for 3+ months (e.g., not show up in meetings/events), will consider to retire. It is possible to become active again via the nomination process.

工作组组长

名字 Github ID 所属组织 Email 城市 微信号
袁怿 SamYuan1990 IBM [email protected] 北京 oe19901019
程阳 stone-ch 中国信通院 [email protected] 北京 yycheng418
刘宇翔 davidkhala GFT [email protected] 香港 davidkhala

如何加入 Github 组织

<面向开发>
TWGC Github 组织是专门用于TWGC旗下的代码协作工作,主要面向的用户是愿意贡献代码给社区的开发人员。
然而TWGC的工作范畴不仅限于此,因而不是所有的TWGC社区成员都需要加入 Github 组织

  1. 你可以联系任意一位工作组组长以获得邀请,联系并申请后,只需要提供你的Github ID,组长将会手动处理你的申请

  2. 在接受邀请之前,你的 Github 账户必须启用 2FA 验证。由于大陆地区无法接收 Github 短信,可以通过安装任意厂商提供的身份验证器来获取 OTP

  3. 一旦工作组组长发出邀请,你将很快通过绑定Github账户的电子邮箱收到邀请邮件。

    1. 你也可以通过访问 本组织首页 来接受邀请
  4. 请将你的成员身份可见性设置为 公开,否则组织之外的人员无法看到你属于 TWGC。

身份验证器

以下推荐列表由社区成员分享整理

  • chrome浏览器:网上应用店中的扩展程序 “身份验证器”
  • Android/ios:Google 身份验证器
  • Firefox浏览器:插件 “authenticator”

tape's People

Contributors

davidkhala avatar dependabot[bot] avatar geekya215 avatar guoger avatar mukulkolpe avatar qylixin avatar ryjones avatar samyuan1990 avatar stone-ch avatar tianxuanhong avatar wangxinalex avatar wuxuer avatar yiwenlong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tape's Issues

Communicate with peer by proxy

HI sir,

How to Communicate with peer by proxy using your Tape? thank you!
Like this:

peers:
  peer0.adminorg.544330u:
    url: grpcs://181.71.124.24:30062
    grpcOptions:
      ssl-target-name-override: nginx.bc9seqlghk0u.baas
      grpc.primary_user_agent: /peer0-adminorg.bceqlghk0u
      grpc.keepalive_time_ms: 600000
    tlsCACerts:
      path: networks/cert/nginx.bc9qlghk0u.baas.pem

my private key does not match public key,please help me

My config.yaml is written like this

private_key: /home/niqinyin/go/src/github.com/kongyixueyuan.com/education/fixtures/crypto-config/peerOrganizations/org1.kevin.kongyixueyuan.com/users/[email protected]/msp/keystore/c24c159c6de601f2703c4e4273682b08cda54ebdaf4ca1c4aa4b3f80b8a91964_sk

I've tried the user's private key, too.But it always reported such an error

ERRO[0000] error connecting to localhost:7051: failed to load client certificate: tls: private key does not match public key

please help me

Issue template

Bug:

Hint: Let's decouple Tape bug with general issues as TLS cert config error,general performance testing issue as resource been eat up, or fabric bugs.
Hint: For any platform specific issues, please try to reproduce by Mac/Linux. For ex, it's hard for Tape maintainers to investigating issue on any kind of IOT device as we don't have your device.

What's Tape log:

What's Peer or Orderer log:

How to reproduce via test-network or minifab:

Feature:

Description of the feature:

Scenario:

if tape supports this feature, then tape user able to benefits

when:

then:

any current workaround:

Scenario:

if tape supports this feature, then tape user able to benefits

when:

then:

any current workaround:

...

Need integration test

There's zero integration today in this project. User/Dev must manually spin up a fabric network and try it out. We need a proper integration test that spins up real fabric network and run stupid with light traffic against it

how to write the "args" in config.yaml

When I write config.yaml, I don't know how to write args.
My function name is "addfile",the type of its parameter is []String ,its parameter is [{"FileName":"1.txt","ID":"121","IPAdress":"1.1.1.2","OrgName":"org2","ModifyTime":"8:27 2019/9/12"},"eventAddFile"], how should I write the args?
By the way, when calling chain code from the Ubuntu command line, the common command is written like this
peer chaincode invoke --tls --cafile $ORDERER_CA -C mychannel -n mycc -c '{"Args":["get","a"]}'
So how do my functions write commands

Fabric 2.2 in CI again

As hot fix for CI, we switched to 2.3 version.
So ... we need add Fabric 2.2 in CI scope.

The threshold in BlockCollector does not take effect

Describe the bug
In the scenario of monitoring multiple peers, if the number of threshold peers receive all transactions, txs can be considered as writed successful. However, the current implementation has a bug. As long as a peer receives all transactions, the monitoring process is deemed to be over and the program exits, which is a big deviation from the original design.
In addition, closing channel finishCh(https://github.com/Hyperledger-TWGC/tape/blob/master/pkg/infra/observer.go#L64) may panic, which has been closed in other goroutines.

To Reproduce

Expected behavior
The threshold in BlockCollector takes affect.

Logs
Attach logs from Tape/Peer/Orderer here. And please format them with markdown!

Additional context
Add any other context about the problem here.

Migrate and fix Azure pipeline to TWGC/Tape

Describe the bug
Due to migration, some Azure managed secret not available in TWGC vault now.
The Azure pipeline file is considered not properly configured.

To Reproduce
When Azure pipeline in TWGC triggred

Logs
There was a resource authorization issue: "The pipeline is not valid. Job BuildAndReleaseBinaries: Step GitHubRelease input gitHubConnection references service connection github.com_stone-ch which could not be found. The service connection does not exist or has not been authorized for use. For authorization details, refer to https://aka.ms/yamlauthz."

Additional context
https://dev.azure.com/Hyperledger/TWGC/_build/results?buildId=29187&view=results

I get a bug,pls help me

[root@blockchain1 stupid]# ./tape config.yaml 100
INFO[0000] Start sending transactions.
DEBU[0000] Start sending broadcast
DEBU[0000] Start sending broadcast
DEBU[0000] Start sending broadcast
DEBU[0000] Start sending broadcast
DEBU[0000] Start sending broadcast
DEBU[0000] Start sending broadcast
DEBU[0000] Start sending broadcast
DEBU[0000] Start sending broadcast
DEBU[0000] Start sending broadcast
DEBU[0000] Start sending broadcast
DEBU[0000] start observer
ERRO[0000] Err processing proposal: %!s(), status: 500, addr: peer0.org1.example.com:7051
ERRO[0000] Err processing proposal: %!s(), status: 500, addr: peer0.org1.example.com:7051
ERRO[0000] Err processing proposal: %!s(), status: 500, addr: peer0.org1.example.com:7051
ERRO[0000] Err processing proposal: %!s(), status: 500, addr: peer0.org1.example.com:7051
ERRO[0000] Err processing proposal: %!s(), status: 500, addr: peer0.org1.example.com:7051
ERRO[0000] Err processing proposal: %!s(), status: 500, addr: peer0.org1.example.com:7051

like this
[root@blockchain1 stupid]# cat config.yaml

Definition of nodes

peer1: &peer1
addr: peer0.org1.example.com:7051
tls_ca_cert: /root/go/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem

peer2: &peer2
addr: peer0.org2.example.com:9051
tls_ca_cert: /root/go/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem

orderer1: &orderer1
addr: orderer.example.com:7050
tls_ca_cert: /root/go/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem

Nodes to interact with

endorsers:

  • *peer1
  • *peer2

we might support multi-committer in the future for more complex test scenario,

i.e. consider tx committed only if it's done on >50% of nodes. But for now,

it seems sufficient to support single committer.

committer: *peer2
orderer: *orderer1

Invocation configs

channel: mychannel
chaincode: mycc
args:

  • GetAllAssets
    mspid: Org1MSP
    private_key: /root/go/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/keystore/54fd4bc5b08cac02d96fb1dfa30def332e43cc8d66987c59f2871f01769dc64f_sk
    sign_cert: /root/go/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/signcerts/[email protected]
    num_of_conn: 10
    client_per_conn: 10

Test peer/orderer **separately**

Often we need to spot network bottleneck by testing 3 phases Endorsement - Order - Commitment separately:

  • generate Proposals to peer and observe endorsement ProposalResponse
  • generate Envelope to orderers and observe ordered Block
  • generate Block to peer and observed committed Block (this is the most tricky one)

This could help us benchmarking fabric components in finer-grained manners.

Require for tape output explaination

Is your proposal related to a problem?

After I successfully ran the Tape in my fabric sample, I got results with three columns: time, block, and tnx.

However, I didn't totally understand what these indicators mean as I have not found related documents in https://github.com/Hyperledger-TWGC/tape .

In addition, where/how can I get results such as latency and TPS.

Describe the solution you'd like

Hope the Tape outputs could be more intuitive or more explanations in README. Thanks

Describe alternatives you've considered

Additional context

When I run ./stupid config.yaml 40000, there has runtime error

[root@localhost stupid-master]# ./stupid config.yaml 40000
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x9aab4f]

goroutine 347 [running]:
github.com/guoger/stupid/infra.(*Observer).Start(0xc000471c60, 0x9c40, 0xbfc015d1df916d85, 0x5cda83d, 0x109e1e0)
/root/stupid-master/infra/observer.go:50 +0x2df
created by main.main
/root/stupid-master/main.go:60 +0x660

Avg tps?

Is your proposal related to a problem?

N/A

Describe the solution you'd like

Time     6.50s Block     22 Tx    542
Time     6.63s Block     23 Tx    542
Time    10.15s Block     24 Tx    244
the last block takes too long time and down total tps.

Describe alternatives you've considered

Provide a avg tps.

Additional context

See here
the tps pre block may 1000+ in previouse,
but for last block, may due to batchtimeout too long, as 8 for tps.
in this case the total tps from 1000+ to 500+ ?
I suppose ew have a avg tps to replace this total tps.
the out put as:
Time     6.50s Block     22 Tx    542
Time     6.63s Block     23 Tx    542 Current TPS: 1000+
Time    10.15s Block     24 Tx    244 Current TPS: 8
time="2020-12-05T15:12:28Z" level=info msg="Completed processing transactions."
tx: 10000, duration: 10.154353182s, tps: 1000+ (this is avg tps), total tps: 984.799309

Launch with connection issue

ERRO[0000] error connecting to localhost:7051: failed to create new connection: connection error: desc = "transport: error while dialing: dial tcp 127.0.0.1:7051: connect: connection refused"#

Environments:

  • OS: Ubuntu 18
  • Go: 1.15.3

/etc/hosts

127.0.0.1       peer0.org1.example.com
127.0.0.1       peer0.org2.example.com
127.0.0.1       orderer.example.com
127.0.0.1       peer1
127.0.0.1       peer2
127.0.0.1       orderer1

Do not panic everywhere

When project was created, code panic everywhere for convenience. And we now should populate errors up and panic at main func

Can user define transaction amount when testing tape

Is your proposal related to a problem?

  1. When I use tape to test my fabric network, the tape sets 10 transactions in each block by default. I just wondering where I can change this setting? It seems I cannot change it in the configure.yaml.

  2. After testing, I quired blockchain height, and I found all the transactions that used for the test were really stored in ledger and can not be removed. So does Tape has a "clear" mechanism like caliper? Thanks

Describe the solution you'd like

Describe alternatives you've considered

(Write your answer here.)

Additional context

so many thanks to this awesome tape project, which frees me from the caliper.

(Write your answer here.)

ProposalResponsePayloads from Peers do not match

Describe the bug
It works when calling a chaincode from the JS script, but fails in tape. The error is ProposalResponsePayloads from Peers do not match.

Part of my config file
It's strange that when I invoke some simple chaincode functions with short parameters, tape works normally. However it fails with follow parameters in complicated functions.

args:
  - base_tx
  - 04379014e00469b50713374741ff06a39e24c869d6e1855a684c159268ce67331a4af3ca09c4e74e7713e50aedc1d0533d1e3cdded042229d4d093b11bdd46b881
  - 1234

Tape Logs
INFO[0000] Start sending transactions.
DEBU[0000] Start sending broadcast
DEBU[0000] start observer
ERRO[0000] ProposalResponsePayloads from Peers do not match

Peer Logs
dev-peer0.org2.example.com-fabcar_1-fb5bcc8bcbed61054a4b653d3984acf4ea372f2536012e48b6b793ad5a856732|2021-01-02T14:22:26.666Z info [c-api:lib/handler.js] [mychannel-50608e54] Calling chaincode Invoke() succeeded. Sending COMPLETED message back to peer

peer0.org1.example.com|2021-01-02 14:22:26.666 UTC [endorser] callChaincode -> INFO 0dc finished chaincode: fabcar duration: 14ms channel=mychannel txID=50608e54

dev-peer0.org1.example.com-fabcar_1-fb5bcc8bcbed61054a4b653d3984acf4ea372f2536012e48b6b793ad5a856732|2021-01-02T14:22:26.666Z info [c-api:lib/handler.js] [mychannel-50608e54] Calling chaincode Invoke() succeeded. Sending COMPLETED message back to peer

peer0.org1.example.com|2021-01-02 14:22:26.666 UTC [comm.grpc.server] 1 -> INFO 0dd unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=192.168.0.1:47232 grpc.code=OK grpc.call_duration=16.306043ms

peer0.org2.example.com|2021-01-02 14:22:26.667 UTC [endorser] callChaincode -> INFO 0ed finished chaincode: fabcar duration: 15ms channel=mychannel txID=50608e54

peer0.org2.example.com|2021-01-02 14:22:26.667 UTC [comm.grpc.server] 1 -> INFO 0ee unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=192.168.0.1:35290 grpc.code=OK grpc.call_duration=17.141611ms

peer0.org2.example.com|2021-01-02 14:22:26.669 UTC [comm.grpc.server] 1 -> INFO 0ef streaming call completed grpc.service=protos.Deliver grpc.method=DeliverFiltered grpc.peer_address=192.168.0.1:35298 error="context finished before block retrieved: context canceled" grpc.code=Unknown grpc.call_duration=21.640987ms

orderer.example.com|2021-01-02 14:22:26.669 UTC [orderer.common.broadcast] Handle -> WARN 0b2 Error reading from 192.168.0.1:48902: rpc error: code = Canceled desc = context canceled

orderer.example.com|2021-01-02 14:22:26.669 UTC [comm.grpc.server] 1 -> INFO 0b3 streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.peer_address=192.168.0.1:48902 error="rpc error: code = Canceled desc = context canceled" grpc.code=Canceled grpc.call_duration=25.158893ms

Additional context
Add any other context about the problem here.

Test chaincode only[TBD]

considering with external chaincode service.
Should we need chaincode level performance testing?

tips part update in read me, as document enhancement

I am fine with current context.
I am not sure, if we'd better refactor this part with link to https://prometheus.io/docs/introduction/overview/ (if we suggestion user use prometheus...)

so that tips can be refactor as:
tips:

  1. network samples....
  2. monitor tool suggestion....

and I suppose later we are able to use some result from probe to replace Increase number of messages per block in your channel configuration may help, as adjust parameter for xxx may help for sample and ...

but I suppose the content update can be in further version/pr.

Originally posted by @SamYuan1990 in #114 (comment)

how to solve it?

[root@blockchain1 stupid]# ./tape config.yaml 1 ERRO[0000] Err processing proposal: %!s(), status: 500, addr: peer0.org2.example.com:9051 ERRO[0000] Err processing proposal: %!s(), status: 500, addr: peer0.org1.example.com:7051

Auto release

automatically create release and upload assets (binary for win/osx/linux) when a new tag is created

Inspect blocks and display success rate

Today, stupid does not care if a block contains invalid transactions (in most cases, it doesn't). However, it might be useful to display success rate by inspecting blocks, especially when multiple peers are supported #10

Observe multiple peers

we should be able to observe multiple peers, to support semantics like "block is considered committed if it's done on >50% peers"

connection retry

Is your proposal related to a problem?

Some time fails create connection between tape and peer.

Describe the solution you'd like

add a general 3 times retry for connection creation before error.

Describe alternatives you've considered

N/A

Additional context

N/A

Mock Fabric for regression test

We should introduce a mocked Fabric so that stupid can be benchmarked against it. This is to prevent performance regression of stupid tool itself

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.