bench

package
v0.0.0-...-d7055bf Latest Latest
Warning

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

Go to latest
Published: Sep 17, 2021 License: MIT Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const IsubataAppHost = "hisucon2018.example.com"

Variables

View Source
var (
	RedirectAttemptedError = fmt.Errorf("redirect attempted")
	RequestTimeoutError    = fmt.Errorf("リクエストがタイムアウトしました")
	UserAgent              = "hisucon2018-benchmarker"
	GetTimeout             = 10 * time.Second
	PostTimeout            = 3 * time.Second
	InitializeTimeout      = 25 * time.Second
	SlowThreshold          = 1000 * time.Millisecond
	MaxCheckerRequest      = 6
	DebugMode              = false
)
View Source
var (
	StaticFiles = []*StaticFile{
		&StaticFile{"/bootstrap/static/css/bootstrap.min.css?bootstrap=4.0.0"},
		&StaticFile{"/bootstrap/static/css/fontawesome-all.min.css?bootstrap=4.0.0"},
		&StaticFile{"/bootstrap/static/jquery.min.js?bootstrap=4.0.0"},
		&StaticFile{"/bootstrap/static/umd/popper.min.js?bootstrap=4.0.0"},
		&StaticFile{"/bootstrap/static/js/bootstrap.min.js?bootstrap=4.0.0"},
	}
	StaticFileImages = []*StaticFileImage{
		&StaticFileImage{"/static/f_f_event_92_s512_f_event_92_0bg.png"},
		&StaticFileImage{"/static/f_f_business_32_s512_f_business_32_0bg.png"},
		&StaticFileImage{"/static/f_f_business_92_s512_f_business_92_0bg.png"},
		&StaticFileImage{"/static/f_f_business_74_s512_f_business_74_0bg.png"},
		&StaticFileImage{"/static/f_f_business_90_s512_f_business_90_0bg.png"},
		&StaticFileImage{"/static/f_f_business_1_s512_f_business_1_0bg.png"},
		&StaticFileImage{"/static/f_f_business_77_s512_f_business_77_0bg.png"},
		&StaticFileImage{"/static/f_f_business_46_s512_f_business_46_0bg.png"},
		&StaticFileImage{"/static/f_f_business_23_s512_f_business_23_0bg.png"},
		&StaticFileImage{"/static/f_f_business_14_s512_f_business_14_0bg.png"},
		&StaticFileImage{"/static/f_f_business_48_s512_f_business_48_0bg.png"},
		&StaticFileImage{"/static/f_f_business_71_s512_f_business_71_0bg.png"},
		&StaticFileImage{"/static/f_f_business_80_s512_f_business_80_0bg.png"},
		&StaticFileImage{"/static/f_f_business_93_s512_f_business_93_0bg.png"},
		&StaticFileImage{"/static/f_f_business_36_s512_f_business_36_0bg.png"},
		&StaticFileImage{"/static/f_f_business_97_s512_f_business_97_0bg.png"},
		&StaticFileImage{"/static/f_f_business_4_s512_f_business_4_0bg.png"},
		&StaticFileImage{"/static/f_f_business_3_s512_f_business_3_0bg.png"},
		&StaticFileImage{"/static/f_f_business_33_s512_f_business_33_0bg.png"},
		&StaticFileImage{"/static/f_f_business_52_s512_f_business_52_0bg.png"},
		&StaticFileImage{"/static/f_f_business_78_s512_f_business_78_0bg.png"},
		&StaticFileImage{"/static/f_f_business_83_s512_f_business_83_0bg.png"},
		&StaticFileImage{"/static/f_f_object_14_s512_f_object_14_0bg.png"},
		&StaticFileImage{"/static/f_f_object_26_s512_f_object_26_0bg.png"},
		&StaticFileImage{"/static/f_f_object_111_s512_f_object_111_0bg.png"},
		&StaticFileImage{"/static/f_f_object_167_s512_f_object_167_0bg.png"},
		&StaticFileImage{"/static/f_f_object_41_s512_f_object_41_0bg.png"},
		&StaticFileImage{"/static/f_f_object_115_s512_f_object_115_0bg.png"},
		&StaticFileImage{"/static/f_f_object_156_s512_f_object_156_0bg.png"},
		&StaticFileImage{"/static/f_f_event_99_s512_f_event_99_0bg.png"},
		&StaticFileImage{"/static/f_f_object_10_s512_f_object_10_0bg.png"},
		&StaticFileImage{"/static/f_f_object_106_s512_f_object_106_0bg.png"},
		&StaticFileImage{"/static/f_f_event_25_s512_f_event_25_0bg.png"},
		&StaticFileImage{"/static/f_f_event_58_s512_f_event_58_0bg.png"},
		&StaticFileImage{"/static/f_f_event_101_s512_f_event_101_0bg.png"},
		&StaticFileImage{"/static/f_f_event_39_s512_f_event_39_0bg.png"},
		&StaticFileImage{"/static/f_f_event_53_s512_f_event_53_0bg.png"},
		&StaticFileImage{"/static/f_f_event_78_s512_f_event_78_0bg.png"},
		&StaticFileImage{"/static/f_f_event_54_s512_f_event_54_0bg.png"},
		&StaticFileImage{"/static/f_f_event_36_s512_f_event_36_0bg.png"},
		&StaticFileImage{"/static/f_f_event_26_s512_f_event_26_0bg.png"},
		&StaticFileImage{"/static/f_f_event_16_s512_f_event_16_0bg.png"},
		&StaticFileImage{"/static/f_f_event_12_s512_f_event_12_0bg.png"},
		&StaticFileImage{"/static/f_f_event_23_s512_f_event_23_0bg.png"},
		&StaticFileImage{"/static/f_f_event_5_s512_f_event_5_0bg.png"},
		&StaticFileImage{"/static/f_f_event_8_s512_f_event_8_0bg.png"},
		&StaticFileImage{"/static/f_f_event_63_s512_f_event_63_0bg.png"},
		&StaticFileImage{"/static/f_f_event_91_s512_f_event_91_0bg.png"},
		&StaticFileImage{"/static/f_f_event_43_s512_f_event_43_0bg.png"},
		&StaticFileImage{"/static/f_f_event_44_s512_f_event_44_0bg.png"},
		&StaticFileImage{"/static/f_f_object_145_s512_f_object_145_0bg.png"},
		&StaticFileImage{"/static/f_f_event_86_s512_f_event_86_0bg.png"},
		&StaticFileImage{"/static/f_f_event_33_s512_f_event_33_0bg.png"},
		&StaticFileImage{"/static/f_f_event_17_s512_f_event_17_0bg.png"},
		&StaticFileImage{"/static/f_f_event_35_s512_f_event_35_0bg.png"},
		&StaticFileImage{"/static/f_f_event_82_s512_f_event_82_0bg.png"},
		&StaticFileImage{"/static/f_f_event_67_s512_f_event_67_0bg.png"},
		&StaticFileImage{"/static/f_f_event_10_s512_f_event_10_0bg.png"},
	}
	UploadFileImages = []*UploadFileImage{
		&UploadFileImage{"/images/f_f_business_14_s512_f_business_14_0bg.png"},
		&UploadFileImage{"/images/f_f_business_1_s512_f_business_1_0bg.png"},
		&UploadFileImage{"/images/f_f_business_23_s512_f_business_23_0bg.png"},
		&UploadFileImage{"/images/f_f_business_32_s512_f_business_32_0bg.png"},
		&UploadFileImage{"/images/f_f_business_33_s512_f_business_33_0bg.png"},
		&UploadFileImage{"/images/f_f_business_36_s512_f_business_36_0bg.png"},
		&UploadFileImage{"/images/f_f_business_3_s512_f_business_3_0bg.png"},
		&UploadFileImage{"/images/f_f_business_46_s512_f_business_46_0bg.png"},
		&UploadFileImage{"/images/f_f_business_48_s512_f_business_48_0bg.png"},
		&UploadFileImage{"/images/f_f_business_4_s512_f_business_4_0bg.png"},
		&UploadFileImage{"/images/f_f_business_52_s512_f_business_52_0bg.png"},
		&UploadFileImage{"/images/f_f_business_71_s512_f_business_71_0bg.png"},
		&UploadFileImage{"/images/f_f_business_74_s512_f_business_74_0bg.png"},
		&UploadFileImage{"/images/f_f_business_77_s512_f_business_77_0bg.png"},
		&UploadFileImage{"/images/f_f_business_78_s512_f_business_78_0bg.png"},
		&UploadFileImage{"/images/f_f_business_80_s512_f_business_80_0bg.png"},
		&UploadFileImage{"/images/f_f_business_83_s512_f_business_83_0bg.png"},
		&UploadFileImage{"/images/f_f_business_90_s512_f_business_90_0bg.png"},
		&UploadFileImage{"/images/f_f_business_92_s512_f_business_92_0bg.png"},
		&UploadFileImage{"/images/f_f_business_93_s512_f_business_93_0bg.png"},
		&UploadFileImage{"/images/f_f_business_97_s512_f_business_97_0bg.png"},
		&UploadFileImage{"/images/f_f_event_101_s512_f_event_101_0bg.png"},
		&UploadFileImage{"/images/f_f_event_10_s512_f_event_10_0bg.png"},
		&UploadFileImage{"/images/f_f_event_12_s512_f_event_12_0bg.png"},
		&UploadFileImage{"/images/f_f_event_16_s512_f_event_16_0bg.png"},
		&UploadFileImage{"/images/f_f_event_17_s512_f_event_17_0bg.png"},
		&UploadFileImage{"/images/f_f_event_23_s512_f_event_23_0bg.png"},
		&UploadFileImage{"/images/f_f_event_25_s512_f_event_25_0bg.png"},
		&UploadFileImage{"/images/f_f_event_26_s512_f_event_26_0bg.png"},
		&UploadFileImage{"/images/f_f_event_33_s512_f_event_33_0bg.png"},
		&UploadFileImage{"/images/f_f_event_35_s512_f_event_35_0bg.png"},
		&UploadFileImage{"/images/f_f_event_36_s512_f_event_36_0bg.png"},
		&UploadFileImage{"/images/f_f_event_39_s512_f_event_39_0bg.png"},
		&UploadFileImage{"/images/f_f_event_43_s512_f_event_43_0bg.png"},
		&UploadFileImage{"/images/f_f_event_44_s512_f_event_44_0bg.png"},
		&UploadFileImage{"/images/f_f_event_53_s512_f_event_53_0bg.png"},
		&UploadFileImage{"/images/f_f_event_54_s512_f_event_54_0bg.png"},
		&UploadFileImage{"/images/f_f_event_58_s512_f_event_58_0bg.png"},
		&UploadFileImage{"/images/f_f_event_5_s512_f_event_5_0bg.png"},
		&UploadFileImage{"/images/f_f_event_63_s512_f_event_63_0bg.png"},
		&UploadFileImage{"/images/f_f_event_67_s512_f_event_67_0bg.png"},
		&UploadFileImage{"/images/f_f_event_78_s512_f_event_78_0bg.png"},
		&UploadFileImage{"/images/f_f_event_82_s512_f_event_82_0bg.png"},
		&UploadFileImage{"/images/f_f_event_86_s512_f_event_86_0bg.png"},
		&UploadFileImage{"/images/f_f_event_8_s512_f_event_8_0bg.png"},
		&UploadFileImage{"/images/f_f_event_91_s512_f_event_91_0bg.png"},
		&UploadFileImage{"/images/f_f_event_92_s512_f_event_92_0bg.png"},
		&UploadFileImage{"/images/f_f_event_99_s512_f_event_99_0bg.png"},
		&UploadFileImage{"/images/f_f_object_106_s512_f_object_106_0bg.png"},
		&UploadFileImage{"/images/f_f_object_10_s512_f_object_10_0bg.png"},
		&UploadFileImage{"/images/f_f_object_111_s512_f_object_111_0bg.png"},
		&UploadFileImage{"/images/f_f_object_115_s512_f_object_115_0bg.png"},
		&UploadFileImage{"/images/f_f_object_145_s512_f_object_145_0bg.png"},
		&UploadFileImage{"/images/f_f_object_14_s512_f_object_14_0bg.png"},
		&UploadFileImage{"/images/f_f_object_156_s512_f_object_156_0bg.png"},
		&UploadFileImage{"/images/f_f_object_167_s512_f_object_167_0bg.png"},
		&UploadFileImage{"/images/f_f_object_26_s512_f_object_26_0bg.png"},
		&UploadFileImage{"/images/f_f_object_41_s512_f_object_41_0bg.png"},
		&UploadFileImage{"/images/hayashi.png"},
		&UploadFileImage{"/images/inoue.png"},
		&UploadFileImage{"/images/ito.png"},
		&UploadFileImage{"/images/kato.png"},
		&UploadFileImage{"/images/kimura.png"},
		&UploadFileImage{"/images/kobayashi.png"},
		&UploadFileImage{"/images/matsumoto.png"},
		&UploadFileImage{"/images/nakamura.png"},
		&UploadFileImage{"/images/saito.png"},
		&UploadFileImage{"/images/sasaki.png"},
		&UploadFileImage{"/images/sato.png"},
		&UploadFileImage{"/images/shimizu.png"},
		&UploadFileImage{"/images/suzuki.png"},
		&UploadFileImage{"/images/takahashi.png"},
		&UploadFileImage{"/images/tanaka.png"},
		&UploadFileImage{"/images/watanabe.png"},
		&UploadFileImage{"/images/yamada.png"},
		&UploadFileImage{"/images/yamaguchi.png"},
		&UploadFileImage{"/images/yamamoto.png"},
		&UploadFileImage{"/images/yoshida.png"},
	}
)

Functions

func CheckAddUser

func CheckAddUser(ctx context.Context, state *State) error

func CheckImage

func CheckImage(ctx context.Context, state *State) error

func CheckLayout

func CheckLayout(ctx context.Context, state *State) error

func CheckLayoutPreTest

func CheckLayoutPreTest(ctx context.Context, state *State) error

ログインユーザが投稿した記事、コメントは編集・削除ボタンが表示される ログインユーザ以外の記事、コメントに対しては編集・削除ボタンが表示されない

func CheckLogin

func CheckLogin(ctx context.Context, state *State) error

- 存在するユーザでログインすることを確認 - ログアウトできることを確認 - 存在しないユーザではログインできないことを確認

func CheckNotLoggedInUser

func CheckNotLoggedInUser(ctx context.Context, state *State) error

- "/" へのアクセスは "/login" へ遷移されることを確認 - "/login" ページの表示されることを確認 - - プロジェクト名が「ハートビーツ研修ブログ」であることを確認 - - name 入力欄があることを確認 - - password 入力欄があることを確認 - - パスワード保存チェックボックスがあることを確認 - - ログインボタンがあることを確認 - "/edudaily/8" へのアクセスは "/login" へ遷移されることを確認 - "/user/" へのアクセスは "/login" へ遷移されることを確認 - "/edudaily/new/" へのアクセスは "/login" へ遷移されることを確認 - "/edudaily/2/new_com/?" へのアクセスは "/login" へ遷移されることを確認

func CheckOrder

func CheckOrder(ctx context.Context, state *State) error

投稿記事は更新日の降順であることを確認 コメントは作成日の降順であることを確認

func CheckStaticFiles

func CheckStaticFiles(ctx context.Context, state *State) error

- 下記ファイルへアクセスできることを確認

  • "/bootstrap/static/css/bootstrap.min.css?bootstrap=4.0.0"
  • "/bootstrap/static/css/fontawesome-all.min.css?bootstrap=4.0.0"
  • "/bootstrap/static/jquery.min.js?bootstrap=4.0.0"
  • "/bootstrap/static/umd/popper.min.js?bootstrap=4.0.0"
  • "/bootstrap/static/js/bootstrap.min.js?bootstrap=4.0.0"

- 画像ファイルをアップロードすることができる

func GetBuffer

func GetBuffer() *bytes.Buffer

func GetCheckerErrors

func GetCheckerErrors() []error

func GetLastCheckerError

func GetLastCheckerError() (err error, t time.Time)

func GetLastSlowPath

func GetLastSlowPath() (path string, t time.Time)

func GetRandomTargetHost

func GetRandomTargetHost() string

func GetTargetHosts

func GetTargetHosts() []string

func GuardCheckerError

func GuardCheckerError(guard bool)

func LoadPostOperation

func LoadPostOperation(ctx context.Context, state *State) error

func LoadReadOperation

func LoadReadOperation(ctx context.Context, state *State) error

func LoadUserOperation

func LoadUserOperation(ctx context.Context, state *State) error

func PreAddUser

func PreAddUser(ctx context.Context, state *State) error

func PrepareDataSet

func PrepareDataSet()

func PutBuffer

func PutBuffer(buf *bytes.Buffer)

func RandomAlphabetString

func RandomAlphabetString(n int) string

func SetTargetHosts

func SetTargetHosts(target []string)

Types

type AppUser

type AppUser struct {
	sync.Mutex
	Name     string
	Password string
	IsAdmin  string
}

type BenchDataSet

type BenchDataSet struct {
	Users []*AppUser
}
var (
	DataPath = "./data"
	DataSet  BenchDataSet
)

type CheckAction

type CheckAction struct {
	Method string
	Path   string

	ContentType string
	PostBody    io.Reader         // for "multipart/form-data"
	PostData    map[string]string // for "application/x-www-form-urlencoded"
	Headers     map[string]string

	ExpectedStatusCode int
	ExpectedLocation   *regexp.Regexp
	ExpectedHeaders    map[string]string
	Description        string
	CheckFunc          func(*http.Response, *bytes.Buffer) error

	EnableCache          bool
	SkipIfCacheAvailable bool
	DisableSlowChecking  bool
}

type Checker

type Checker struct {
	Client *http.Client
	Cache  *urlcache.CacheStore
	// contains filtered or unexported fields
}

func NewChecker

func NewChecker() *Checker

func (*Checker) NewRequest

func (c *Checker) NewRequest(method, uri string, body io.Reader) (*http.Request, error)

func (*Checker) OnError

func (c *Checker) OnError(a *CheckAction, req *http.Request, err error) error

func (*Checker) Play

func (c *Checker) Play(ctx context.Context, a *CheckAction) error

func (*Checker) ResetCookie

func (c *Checker) ResetCookie()

type CheckerError

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

func (*CheckerError) Error

func (e *CheckerError) Error() string

func (*CheckerError) IsFatal

func (e *CheckerError) IsFatal() bool

func (*CheckerError) IsTimeout

func (e *CheckerError) IsTimeout() bool

type CheckerTransport

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

func (*CheckerTransport) RoundTrip

func (ct *CheckerTransport) RoundTrip(req *http.Request) (*http.Response, error)

type State

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

func (*State) GetChecker

func (s *State) GetChecker(u *AppUser) *Checker

func (*State) Init

func (s *State) Init()

func (*State) PopRandomUser

func (s *State) PopRandomUser() (*AppUser, *Checker, func())

func (*State) PushUser

func (s *State) PushUser(u *AppUser)

type StaticFile

type StaticFile struct {
	Path string
}

type StaticFileImage

type StaticFileImage struct {
	Path string
}

type UploadFileImage

type UploadFileImage struct {
	Path string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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