tps

package
v7.2.9 Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2024 License: Apache-2.0 Imports: 5 Imported by: 0

README

tps

tps statistics requests per second.

Usage

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

Test
package erpcs

import (
	"testing"
	"time"

	"github.com/andeya/erpc/v7"
)

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

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