feat: Add additional test annotations (#8272)
* Annotate api,proxy_util,blockstore_badger, policy tests
* Annotate splitstore: bsbadger / markset
* Annotate splitstore feature
* Annotate union/timed blockstore tests
* Annotate openrpc, diff_adt tests
* Annotate error,drand,events tests
* Annotate predicates_test
* Fix annotations
* Annotate tscache, gen tests
* Annotate fundmanager test
* Annotate repub and selection tests
* Annotate statetree_test
* Annotate forks_test
* Annotate searchwait_test.go
* Fix duplicated @@ symbols
* Annotate chain stmgr/store tests
* Annotate more (types) tests
* More tests annotated
* Annotate conformance chaos actor tests
* Annotate more integration tests
* Annotate journal system tests
* Annotate more tests.
* Annotate gas,head buffer behaviors
* Fix markset annotations
* doc: test annotations for the markets dagstore wrapper
* Annotate miner_api test in dagstore
* Annotate more test files
* Remove bad annotations from fsrepo
* Annotate wdpost system
* Remove bad annotations
* Renamce "conformance" to "chaos_actor" tests
* doc: stm annotations for blockheader & election proof tests
* Annotate remaining "A" tests
* annotate: stm for error_test
* memrepo_test.go
* Annotate "b" file tests
* message_test.go
* doc: stm annotate for fsrepo_test
* Annotate "c" file tests
* Annotate "D" test files
* message_test.go
* doc: stm annotate for chain, node/config & client
* docs: stm annotate node_test
* Annotate u,v,wl tests
* doc: stm annotations for various test files
* Annotate "T" test files
* doc: stm annotate for proxy_util_test & policy_test
* doc: stm annotate for various tests
* doc: final few stm annotations
* Add mempool unit tests
* Add two more memPool Add tests
* Update submodules
* Add check function tests
* Add stm annotations, refactor test helper
* Annotate api,proxy_util,blockstore_badger, policy tests
* Annotate splitstore: bsbadger / markset
solving merge conflicts
* Annotate splitstore feature
* Annotate union/timed blockstore tests
* Annotate openrpc, diff_adt tests
* Annotate error,drand,events tests
* Annotate predicates_test
* Fix annotations
* Annotate tscache, gen tests
* Annotate fundmanager test
* Annotate statetree_test
* Annotate forks_test
* Annotate searchwait_test.go
* Fix duplicated @@ symbols
* Annotate chain stmgr/store tests
* Annotate more (types) tests
* More tests annotated
* Annotate conformance chaos actor tests
* Annotate more integration tests
* Annotate journal system tests
* Annotate more tests.
* Annotate gas,head buffer behaviors
solve merge conflict
* Fix markset annotations
* Annotate miner_api test in dagstore
* Annotate more test files
* doc: test annotations for the markets dagstore wrapper
* Annotate wdpost system
* Renamce "conformance" to "chaos_actor" tests
* Annotate remaining "A" tests
* doc: stm annotations for blockheader & election proof tests
* annotate: stm for error_test
* Annotate "b" file tests
* memrepo_test.go
* Annotate "c" file tests
* message_test.go
* Annotate "D" test files
* doc: stm annotate for fsrepo_test
* Annotate u,v,wl tests
* message_test.go
* doc: stm annotate for chain, node/config & client
* docs: stm annotate node_test
* Annotate "T" test files
* doc: stm annotations for various test files
* Add mempool unit tests
solve merge conflict
* doc: stm annotate for proxy_util_test & policy_test
* doc: stm annotate for various tests
* doc: final few stm annotations
* Add two more memPool Add tests
* Update submodules
* Add check function tests
solve conflict
* Add stm annotations, refactor test helper
solve merge conflict
* Change CLI test kinds to "unit"
* Fix double merged test
* Fix ccupgrade_test merge
* Fix lint issues
* Add stm annotation to types_Test
* Test vectors submodule
* Add file annotation to burn_test
Co-authored-by: Nikola Divic <divicnikola@gmail.com>
Co-authored-by: TheMenko <themenkoprojects@gmail.com>
2022-03-16 17:37:34 +00:00
|
|
|
//stm: ignore
|
2021-08-27 19:25:43 +00:00
|
|
|
//go:build !windows
|
2020-03-22 21:08:22 +00:00
|
|
|
// +build !windows
|
|
|
|
|
feat: Add additional test annotations (#8272)
* Annotate api,proxy_util,blockstore_badger, policy tests
* Annotate splitstore: bsbadger / markset
* Annotate splitstore feature
* Annotate union/timed blockstore tests
* Annotate openrpc, diff_adt tests
* Annotate error,drand,events tests
* Annotate predicates_test
* Fix annotations
* Annotate tscache, gen tests
* Annotate fundmanager test
* Annotate repub and selection tests
* Annotate statetree_test
* Annotate forks_test
* Annotate searchwait_test.go
* Fix duplicated @@ symbols
* Annotate chain stmgr/store tests
* Annotate more (types) tests
* More tests annotated
* Annotate conformance chaos actor tests
* Annotate more integration tests
* Annotate journal system tests
* Annotate more tests.
* Annotate gas,head buffer behaviors
* Fix markset annotations
* doc: test annotations for the markets dagstore wrapper
* Annotate miner_api test in dagstore
* Annotate more test files
* Remove bad annotations from fsrepo
* Annotate wdpost system
* Remove bad annotations
* Renamce "conformance" to "chaos_actor" tests
* doc: stm annotations for blockheader & election proof tests
* Annotate remaining "A" tests
* annotate: stm for error_test
* memrepo_test.go
* Annotate "b" file tests
* message_test.go
* doc: stm annotate for fsrepo_test
* Annotate "c" file tests
* Annotate "D" test files
* message_test.go
* doc: stm annotate for chain, node/config & client
* docs: stm annotate node_test
* Annotate u,v,wl tests
* doc: stm annotations for various test files
* Annotate "T" test files
* doc: stm annotate for proxy_util_test & policy_test
* doc: stm annotate for various tests
* doc: final few stm annotations
* Add mempool unit tests
* Add two more memPool Add tests
* Update submodules
* Add check function tests
* Add stm annotations, refactor test helper
* Annotate api,proxy_util,blockstore_badger, policy tests
* Annotate splitstore: bsbadger / markset
solving merge conflicts
* Annotate splitstore feature
* Annotate union/timed blockstore tests
* Annotate openrpc, diff_adt tests
* Annotate error,drand,events tests
* Annotate predicates_test
* Fix annotations
* Annotate tscache, gen tests
* Annotate fundmanager test
* Annotate statetree_test
* Annotate forks_test
* Annotate searchwait_test.go
* Fix duplicated @@ symbols
* Annotate chain stmgr/store tests
* Annotate more (types) tests
* More tests annotated
* Annotate conformance chaos actor tests
* Annotate more integration tests
* Annotate journal system tests
* Annotate more tests.
* Annotate gas,head buffer behaviors
solve merge conflict
* Fix markset annotations
* Annotate miner_api test in dagstore
* Annotate more test files
* doc: test annotations for the markets dagstore wrapper
* Annotate wdpost system
* Renamce "conformance" to "chaos_actor" tests
* Annotate remaining "A" tests
* doc: stm annotations for blockheader & election proof tests
* annotate: stm for error_test
* Annotate "b" file tests
* memrepo_test.go
* Annotate "c" file tests
* message_test.go
* Annotate "D" test files
* doc: stm annotate for fsrepo_test
* Annotate u,v,wl tests
* message_test.go
* doc: stm annotate for chain, node/config & client
* docs: stm annotate node_test
* Annotate "T" test files
* doc: stm annotations for various test files
* Add mempool unit tests
solve merge conflict
* doc: stm annotate for proxy_util_test & policy_test
* doc: stm annotate for various tests
* doc: final few stm annotations
* Add two more memPool Add tests
* Update submodules
* Add check function tests
solve conflict
* Add stm annotations, refactor test helper
solve merge conflict
* Change CLI test kinds to "unit"
* Fix double merged test
* Fix ccupgrade_test merge
* Fix lint issues
* Add stm annotation to types_Test
* Test vectors submodule
* Add file annotation to burn_test
Co-authored-by: Nikola Divic <divicnikola@gmail.com>
Co-authored-by: TheMenko <themenkoprojects@gmail.com>
2022-03-16 17:37:34 +00:00
|
|
|
// This file tests file descriptor limits; since this is an OS feature, it should not be annotated
|
|
|
|
|
2020-03-22 21:08:22 +00:00
|
|
|
package ulimit
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
"strings"
|
|
|
|
"syscall"
|
|
|
|
"testing"
|
2021-08-26 13:59:54 +00:00
|
|
|
|
|
|
|
"github.com/filecoin-project/lotus/build"
|
2020-03-22 21:08:22 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestManageFdLimit(t *testing.T) {
|
|
|
|
t.Log("Testing file descriptor count")
|
|
|
|
if _, _, err := ManageFdLimit(); err != nil {
|
|
|
|
t.Errorf("Cannot manage file descriptors")
|
|
|
|
}
|
|
|
|
|
2021-08-26 13:59:54 +00:00
|
|
|
if build.DefaultFDLimit != uint64(16<<10) {
|
2020-03-22 21:08:22 +00:00
|
|
|
t.Errorf("Maximum file descriptors default value changed")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestManageInvalidNFds(t *testing.T) {
|
|
|
|
t.Logf("Testing file descriptor invalidity")
|
|
|
|
var err error
|
|
|
|
if err = os.Unsetenv("IPFS_FD_MAX"); err != nil {
|
|
|
|
t.Fatal("Cannot unset the IPFS_FD_MAX env variable")
|
|
|
|
}
|
|
|
|
|
|
|
|
rlimit := syscall.Rlimit{}
|
|
|
|
if err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlimit); err != nil {
|
|
|
|
t.Fatal("Cannot get the file descriptor count")
|
|
|
|
}
|
|
|
|
|
|
|
|
value := rlimit.Max + rlimit.Cur
|
|
|
|
if err = os.Setenv("IPFS_FD_MAX", fmt.Sprintf("%d", value)); err != nil {
|
|
|
|
t.Fatal("Cannot set the IPFS_FD_MAX env variable")
|
|
|
|
}
|
|
|
|
|
|
|
|
t.Logf("setting ulimit to %d, max %d, cur %d", value, rlimit.Max, rlimit.Cur)
|
|
|
|
|
2024-05-09 02:15:35 +00:00
|
|
|
if changed, isNew, err := ManageFdLimit(); err == nil {
|
|
|
|
t.Errorf("ManageFdLimit should return an error: changed %t, new: %d", changed, isNew)
|
2020-03-22 21:08:22 +00:00
|
|
|
} else if err != nil {
|
|
|
|
flag := strings.Contains(err.Error(),
|
2020-08-21 01:43:13 +00:00
|
|
|
"failed to raise ulimit to LOTUS_FD_MAX")
|
2020-03-22 21:08:22 +00:00
|
|
|
if !flag {
|
|
|
|
t.Error("ManageFdLimit returned unexpected error", err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// unset all previous operations
|
|
|
|
if err = os.Unsetenv("IPFS_FD_MAX"); err != nil {
|
|
|
|
t.Fatal("Cannot unset the IPFS_FD_MAX env variable")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestManageFdLimitWithEnvSet(t *testing.T) {
|
|
|
|
t.Logf("Testing file descriptor manager with IPFS_FD_MAX set")
|
|
|
|
var err error
|
|
|
|
if err = os.Unsetenv("IPFS_FD_MAX"); err != nil {
|
|
|
|
t.Fatal("Cannot unset the IPFS_FD_MAX env variable")
|
|
|
|
}
|
|
|
|
|
|
|
|
rlimit := syscall.Rlimit{}
|
|
|
|
if err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlimit); err != nil {
|
|
|
|
t.Fatal("Cannot get the file descriptor count")
|
|
|
|
}
|
|
|
|
|
|
|
|
value := rlimit.Max - rlimit.Cur + 1
|
|
|
|
if err = os.Setenv("IPFS_FD_MAX", fmt.Sprintf("%d", value)); err != nil {
|
|
|
|
t.Fatal("Cannot set the IPFS_FD_MAX env variable")
|
|
|
|
}
|
|
|
|
|
|
|
|
if _, _, err = ManageFdLimit(); err != nil {
|
|
|
|
t.Errorf("Cannot manage file descriptor count")
|
|
|
|
}
|
|
|
|
|
|
|
|
// unset all previous operations
|
|
|
|
if err = os.Unsetenv("IPFS_FD_MAX"); err != nil {
|
|
|
|
t.Fatal("Cannot unset the IPFS_FD_MAX env variable")
|
|
|
|
}
|
2020-03-22 21:39:27 +00:00
|
|
|
}
|