erpcs

package
v6.3.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2021 License: Apache-2.0 Imports: 5 Imported by: 0

README

tps

tps statistics requests per second.

Usage

import tps "github.com/henrylee2cn/tp-ext/plugin-tps"

Test
package erpcs

import (
	"testing"
	"time"

	"github.com/henrylee2cn/erpc/v6"
)

type Call struct {
	erpc.CallCtx
}

func (*Call) Test(*struct{}) (*struct{}, *erpc.Status) {
	return nil, nil
}

type Push struct {
	erpc.PushCtx
}

func (*Push) Test(*struct{}) *erpc.Status {
	return nil
}

func TestTPS(t *testing.T) {
	erpc.SetLoggerLevel("OFF")
	// Server
	srv := erpc.NewPeer(erpc.PeerConfig{ListenPort: 9090}, NewTPS(5))
	srv.RouteCall(new(Call))
	srv.RoutePush(new(Push))
	go srv.ListenAndServe()
	time.Sleep(1e9)

	// Client
	cli := erpc.NewPeer(erpc.PeerConfig{})
	sess, stat := cli.Dial(":9090")
	if !stat.OK() {
		t.Fatal(stat)
	}

	ticker := time.NewTicker(time.Millisecond * 10)
	for i := 0; i < 1<<10; i++ {
		<-ticker.C
		stat = sess.Call("/call/test", nil, nil).Status()
		if !stat.OK() {
			t.Fatal(stat)
		}
		stat = sess.Push("/push/test", nil)
		if !stat.OK() {
			t.Fatal(stat)
		}
	}
}

test command:

go test -v -run=TestTPS

Documentation

Overview

Package tps statistics requests per second

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type TPS

type TPS struct {
	// contains filtered or unexported fields
}

func NewTPS

func NewTPS(intervalSecond uint32) *TPS

func (*TPS) Name

func (t *TPS) Name() string

func (*TPS) PostReadPushBody

func (t *TPS) PostReadPushBody(ctx erpc.ReadCtx) *erpc.Status

func (*TPS) PostReg

func (t *TPS) PostReg(h *erpc.Handler) error

func (*TPS) PostWriteReply

func (t *TPS) PostWriteReply(ctx erpc.WriteCtx) *erpc.Status

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL