2013-12-05 Richard Biener <rguenther@suse.de>
[official-gcc.git] / libgo / go / syscall / rlimit_linux_test.go
blob4ec720e936083e5e0714d3b39b31a1a3341ecfe6
1 // Copyright 2013 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
5 package syscall_test
7 import (
8 "syscall"
9 "testing"
12 func TestRlimit(t *testing.T) {
13 var rlimit, zero syscall.Rlimit
14 err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlimit)
15 if err != nil {
16 t.Fatalf("Getrlimit: save failed: %v", err)
18 if zero == rlimit {
19 t.Fatalf("Getrlimit: save failed: got zero value %#v", rlimit)
21 set := rlimit
22 set.Cur = set.Max - 1
23 err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &set)
24 if err != nil {
25 t.Fatalf("Setrlimit: set failed: %#v %v", set, err)
27 var get syscall.Rlimit
28 err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &get)
29 if err != nil {
30 t.Fatalf("Getrlimit: get failed: %v", err)
32 set = rlimit
33 set.Cur = set.Max - 1
34 if set != get {
35 t.Fatalf("Rlimit: change failed: wanted %#v got %#v", set, get)
37 err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rlimit)
38 if err != nil {
39 t.Fatalf("Setrlimit: restore failed: %#v %v", rlimit, err)