本文整理汇总了Golang中k8s/io/kubernetes/pkg/api/unversioned.Unix函数的典型用法代码示例。如果您正苦于以下问题:Golang Unix函数的具体用法?Golang Unix怎么用?Golang Unix使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Unix函数的17个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: makeContainerStatus
// makeContainerStatus creates the api.containerStatus of a container from the podInfo.
func makeContainerStatus(container *kubecontainer.Container, podInfo *podInfo) api.ContainerStatus {
var status api.ContainerStatus
status.Name = container.Name
status.Image = container.Image
status.ContainerID = string(container.ID)
// TODO(yifan): Add image ID info.
switch podInfo.state {
case Running:
// TODO(yifan): Get StartedAt.
status.State = api.ContainerState{
Running: &api.ContainerStateRunning{
StartedAt: unversioned.Unix(container.Created, 0),
},
}
case Embryo, Preparing, Prepared:
status.State = api.ContainerState{Waiting: &api.ContainerStateWaiting{}}
case AbortedPrepare, Deleting, Exited, Garbage:
exitCode, ok := podInfo.exitCodes[status.Name]
if !ok {
glog.Warningf("rkt: Cannot get exit code for container %v", container)
exitCode = -1
}
status.State = api.ContainerState{
Terminated: &api.ContainerStateTerminated{
ExitCode: exitCode,
StartedAt: unversioned.Unix(container.Created, 0),
},
}
default:
glog.Warningf("rkt: Unknown pod state: %q", podInfo.state)
}
return status
}
开发者ID:previousnext,项目名称:kube-ingress,代码行数:36,代码来源:pod_info.go
示例2: generateFakeEvents
func generateFakeEvents() []kube_api.Event {
event1Time := kube_api_unv.Unix(12345, 0)
event2Time := kube_api_unv.Unix(12366, 0)
event1SourceHostname := "event1HostName"
event2SourceHostname := "event2HostName"
event1Reason := "event1"
event2Reason := "event2"
events := []kube_api.Event{
{
Reason: event1Reason,
LastTimestamp: event1Time,
Source: kube_api.EventSource{
Host: event1SourceHostname,
},
},
{
Reason: event2Reason,
LastTimestamp: event2Time,
Source: kube_api.EventSource{
Host: event2SourceHostname,
},
},
}
return events
}
开发者ID:MohamedFAhmed,项目名称:heapster,代码行数:25,代码来源:driver_test.go
示例3: TestSyncPastDeadlineJobFinished
func TestSyncPastDeadlineJobFinished(t *testing.T) {
clientset := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
fakePodControl := controller.FakePodControl{}
manager.podControl = &fakePodControl
manager.podStoreSynced = alwaysReady
var actual *extensions.Job
manager.updateHandler = func(job *extensions.Job) error {
actual = job
return nil
}
job := newJob(1, 1)
activeDeadlineSeconds := int64(10)
job.Spec.ActiveDeadlineSeconds = &activeDeadlineSeconds
start := unversioned.Unix(unversioned.Now().Time.Unix()-15, 0)
job.Status.StartTime = &start
job.Status.Conditions = append(job.Status.Conditions, newCondition(extensions.JobFailed, "DeadlineExceeded", "Job was active longer than specified deadline"))
manager.jobStore.Store.Add(job)
err := manager.syncJob(getKey(job, t))
if err != nil {
t.Errorf("Unexpected error when syncing jobs %v", err)
}
if len(fakePodControl.Templates) != 0 {
t.Errorf("Unexpected number of creates. Expected %d, saw %d\n", 0, len(fakePodControl.Templates))
}
if len(fakePodControl.DeletePodName) != 0 {
t.Errorf("Unexpected number of deletes. Expected %d, saw %d\n", 0, len(fakePodControl.DeletePodName))
}
if actual != nil {
t.Error("Unexpected job modification")
}
}
开发者ID:Victorliautaud,项目名称:kubernetes,代码行数:33,代码来源:controller_test.go
示例4: TestStoreEventsSingleEventInput
func TestStoreEventsSingleEventInput(t *testing.T) {
fakeSink := NewFakeSink()
eventTime := kube_api_unv.Unix(12345, 0)
eventSourceHostname := "event1HostName"
eventReason := "event1"
events := []kube_api.Event{
{
Reason: eventReason,
LastTimestamp: eventTime,
Source: kube_api.EventSource{
Host: eventSourceHostname,
},
},
}
//expect msg string
timeStr, err := eventTime.MarshalJSON()
assert.NoError(t, err)
msgString := fmt.Sprintf(`{"EventMessage":"","EventReason":"%s","EventTimestamp":%s,"EventCount":0,"EventInvolvedObject":{},"EventSource":{"host":"%s"}}`, eventReason, string(timeStr), eventSourceHostname)
err = fakeSink.StoreEvents(events)
assert.NoError(t, err)
assert.Equal(t, 1, len(fakeSink.fakeProducer.msgs))
assert.Equal(t, msgString, fakeSink.fakeProducer.msgs[0].message)
}
开发者ID:MohamedFAhmed,项目名称:heapster,代码行数:25,代码来源:driver_test.go
示例5: TestAddOrUpdateEventExisting
func TestAddOrUpdateEventExisting(t *testing.T) {
// Arrange
eventCache := NewEventCache()
event1Time := unversioned.Unix(2324, 2342)
event2Time := unversioned.Now()
event1 := api.Event{
Reason: "something happened",
Message: "can you believe it?",
ObjectMeta: api.ObjectMeta{
ResourceVersion: "rs1",
},
InvolvedObject: api.ObjectReference{
Kind: "Scheduler",
Name: "anOkName",
Namespace: "someNamespace",
UID: "C934D3234CD0242",
APIVersion: "version",
},
Source: api.EventSource{
Component: "kubelet",
Host: "kublet.node2",
},
Count: 1,
FirstTimestamp: event1Time,
LastTimestamp: event1Time,
}
event2 := api.Event{
Reason: "something happened",
Message: "can you believe it?",
ObjectMeta: api.ObjectMeta{
ResourceVersion: "rs2",
},
InvolvedObject: api.ObjectReference{
Kind: "Scheduler",
Name: "anOkName",
Namespace: "someNamespace",
UID: "C934D3234CD0242",
APIVersion: "version",
},
Source: api.EventSource{
Component: "kubelet",
Host: "kublet.node2",
},
Count: 3,
FirstTimestamp: event1Time,
LastTimestamp: event2Time,
}
// Act
eventCache.addOrUpdateEvent(&event1)
result1 := eventCache.addOrUpdateEvent(&event2)
result2 := eventCache.getEvent(&event1)
// Assert
compareEventWithHistoryEntry(&event2, &result1, t)
compareEventWithHistoryEntry(&event2, &result2, t)
}
开发者ID:resouer,项目名称:contrib,代码行数:57,代码来源:events_cache_test.go
示例6: TestStoreEventsMultipleEventsInput
func TestStoreEventsMultipleEventsInput(t *testing.T) {
fakeSink := NewFakeOpenTSDBSink(true, true)
event1Time := kube_api_unv.Unix(12345, 0)
event2Time := kube_api_unv.Unix(12366, 0)
event1SourceHostname := "event1HostName"
event2SourceHostname := "event2HostName"
event1Reason := "event1"
event2Reason := "event2"
events := []kube_api.Event{
{
Reason: event1Reason,
LastTimestamp: event1Time,
Source: kube_api.EventSource{
Host: event1SourceHostname,
},
},
{
Reason: event2Reason,
LastTimestamp: event2Time,
Source: kube_api.EventSource{
Host: event2SourceHostname,
},
},
}
err := fakeSink.StoreEvents(events)
assert.NoError(t, err)
assert.Equal(t, 2, len(fakeSink.fakeClient.receivedDataPoints))
assert.Equal(t, eventMetricName, fakeSink.fakeClient.receivedDataPoints[0].Metric)
assert.Equal(t, 2, len(fakeSink.fakeClient.receivedDataPoints[0].Tags))
assert.Equal(t, event1Time.Time.Unix(), fakeSink.fakeClient.receivedDataPoints[0].Timestamp)
assert.Equal(t, "", fakeSink.fakeClient.receivedDataPoints[0].Tags["pod_id"])
assert.Equal(t, event1SourceHostname, fakeSink.fakeClient.receivedDataPoints[0].Tags[sink_api.LabelHostname.Key])
assert.Contains(t, fakeSink.fakeClient.receivedDataPoints[0].Value, event1Reason)
assert.Equal(t, eventMetricName, fakeSink.fakeClient.receivedDataPoints[1].Metric)
assert.Equal(t, 2, len(fakeSink.fakeClient.receivedDataPoints[1].Tags))
assert.Equal(t, event2Time.Time.Unix(), fakeSink.fakeClient.receivedDataPoints[1].Timestamp)
assert.Equal(t, "", fakeSink.fakeClient.receivedDataPoints[1].Tags["pod_id"])
assert.Equal(t, event2SourceHostname, fakeSink.fakeClient.receivedDataPoints[1].Tags[sink_api.LabelHostname.Key])
assert.Contains(t, fakeSink.fakeClient.receivedDataPoints[1].Value, event2Reason)
}
开发者ID:MohamedFAhmed,项目名称:heapster,代码行数:41,代码来源:driver_test.go
示例7: fuzzerFor
func fuzzerFor(t *testing.T, version unversioned.GroupVersion, src rand.Source) *fuzz.Fuzzer {
f := fuzz.New().NilChance(.5).NumElements(1, 1)
if src != nil {
f.RandSource(src)
}
f.Funcs(
func(j *runtime.TypeMeta, c fuzz.Continue) {
// We have to customize the randomization of TypeMetas because their
// APIVersion and Kind must remain blank in memory.
j.APIVersion = ""
j.Kind = ""
},
func(j *runtime.Object, c fuzz.Continue) {
*j = &runtime.Unknown{
TypeMeta: runtime.TypeMeta{
APIVersion: "unknown.group/unknown",
Kind: "Something",
},
ContentType: "application/json",
Raw: []byte(`{"apiVersion":"unknown.group/unknown","kind":"Something","someKey":"someValue"}`),
}
},
func(j *unversioned.TypeMeta, c fuzz.Continue) {
// We have to customize the randomization of TypeMetas because their
// APIVersion and Kind must remain blank in memory.
j.APIVersion = ""
j.Kind = ""
},
func(j *kapi.ObjectMeta, c fuzz.Continue) {
j.Name = c.RandString()
j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10)
j.SelfLink = c.RandString()
j.UID = types.UID(c.RandString())
j.GenerateName = c.RandString()
var sec, nsec int64
c.Fuzz(&sec)
c.Fuzz(&nsec)
j.CreationTimestamp = unversioned.Unix(sec, nsec).Rfc3339Copy()
},
func(j *kapi.ObjectReference, c fuzz.Continue) {
// We have to customize the randomization of TypeMetas because their
// APIVersion and Kind must remain blank in memory.
j.APIVersion = c.RandString()
j.Kind = c.RandString()
j.Namespace = c.RandString()
j.Name = c.RandString()
j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10)
j.FieldPath = c.RandString()
},
)
return f
}
开发者ID:juanluisvaladas,项目名称:origin,代码行数:53,代码来源:serialization_test.go
示例8: TestNewSecretListCreation
func TestNewSecretListCreation(t *testing.T) {
cases := []struct {
k8sRs *api.SecretList
expected *SecretList
namespace *common.NamespaceQuery
}{
{
k8SecretList,
&SecretList{
Secrets: []Secret{
{
ObjectMeta: common.ObjectMeta{
Name: "user1",
Namespace: "foo",
CreationTimestamp: unversioned.Unix(111, 222),
},
TypeMeta: common.NewTypeMeta(common.ResourceKindSecret),
},
{
ObjectMeta: common.ObjectMeta{
Name: "user2",
Namespace: "foo",
CreationTimestamp: unversioned.Unix(111, 222),
},
TypeMeta: common.NewTypeMeta(common.ResourceKindSecret),
},
},
ListMeta: common.ListMeta{2},
},
common.NewNamespaceQuery([]string{"foo"}),
},
}
for _, c := range cases {
actual := NewSecretList(c.k8sRs.Items, dataselect.NoDataSelect)
if !reflect.DeepEqual(actual, c.expected) {
t.Errorf("NewSecretList() ==\n %#v\nExpected: %#v", actual, c.expected)
}
}
}
开发者ID:digitalfishpond,项目名称:dashboard,代码行数:40,代码来源:secret_test.go
示例9: TestSortingPrinter
//.........这里部分代码省略.........
ObjectMeta: api.ObjectMeta{
Name: "a",
},
},
},
},
sort: &api.PodList{
Items: []api.Pod{
{
ObjectMeta: api.ObjectMeta{
Name: "a",
},
},
{
ObjectMeta: api.ObjectMeta{
Name: "b",
},
},
{
ObjectMeta: api.ObjectMeta{
Name: "c",
},
},
},
},
field: "{.metadata.name}",
},
{
name: "random-order-timestamp",
obj: &api.PodList{
Items: []api.Pod{
{
ObjectMeta: api.ObjectMeta{
CreationTimestamp: unversioned.Unix(300, 0),
},
},
{
ObjectMeta: api.ObjectMeta{
CreationTimestamp: unversioned.Unix(100, 0),
},
},
{
ObjectMeta: api.ObjectMeta{
CreationTimestamp: unversioned.Unix(200, 0),
},
},
},
},
sort: &api.PodList{
Items: []api.Pod{
{
ObjectMeta: api.ObjectMeta{
CreationTimestamp: unversioned.Unix(100, 0),
},
},
{
ObjectMeta: api.ObjectMeta{
CreationTimestamp: unversioned.Unix(200, 0),
},
},
{
ObjectMeta: api.ObjectMeta{
CreationTimestamp: unversioned.Unix(300, 0),
},
},
},
开发者ID:40a,项目名称:bootkube,代码行数:67,代码来源:sorting_printer_test.go
示例10: FuzzerFor
// FuzzerFor can randomly populate api objects that are destined for version.
func FuzzerFor(t *testing.T, version unversioned.GroupVersion, src rand.Source) *fuzz.Fuzzer {
f := fuzz.New().NilChance(.5).NumElements(1, 1)
if src != nil {
f.RandSource(src)
}
f.Funcs(
func(j *int, c fuzz.Continue) {
*j = int(c.Int31())
},
func(j **int, c fuzz.Continue) {
if c.RandBool() {
i := int(c.Int31())
*j = &i
} else {
*j = nil
}
},
func(q *resource.Quantity, c fuzz.Continue) {
*q = *resource.NewQuantity(c.Int63n(1000), resource.DecimalExponent)
},
func(j *runtime.TypeMeta, c fuzz.Continue) {
// We have to customize the randomization of TypeMetas because their
// APIVersion and Kind must remain blank in memory.
j.APIVersion = ""
j.Kind = ""
},
func(j *unversioned.TypeMeta, c fuzz.Continue) {
// We have to customize the randomization of TypeMetas because their
// APIVersion and Kind must remain blank in memory.
j.APIVersion = ""
j.Kind = ""
},
func(j *api.ObjectMeta, c fuzz.Continue) {
j.Name = c.RandString()
j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10)
j.SelfLink = c.RandString()
j.UID = types.UID(c.RandString())
j.GenerateName = c.RandString()
var sec, nsec int64
c.Fuzz(&sec)
c.Fuzz(&nsec)
j.CreationTimestamp = unversioned.Unix(sec, nsec).Rfc3339Copy()
},
func(j *api.ObjectReference, c fuzz.Continue) {
// We have to customize the randomization of TypeMetas because their
// APIVersion and Kind must remain blank in memory.
j.APIVersion = c.RandString()
j.Kind = c.RandString()
j.Namespace = c.RandString()
j.Name = c.RandString()
j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10)
j.FieldPath = c.RandString()
},
func(j *unversioned.ListMeta, c fuzz.Continue) {
j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10)
j.SelfLink = c.RandString()
},
func(j *api.ListOptions, c fuzz.Continue) {
label, _ := labels.Parse("a=b")
j.LabelSelector = label
field, _ := fields.ParseSelector("a=b")
j.FieldSelector = field
},
func(j *api.PodExecOptions, c fuzz.Continue) {
j.Stdout = true
j.Stderr = true
},
func(j *api.PodAttachOptions, c fuzz.Continue) {
j.Stdout = true
j.Stderr = true
},
func(s *api.PodSpec, c fuzz.Continue) {
c.FuzzNoCustom(s)
// has a default value
ttl := int64(30)
if c.RandBool() {
ttl = int64(c.Uint32())
}
s.TerminationGracePeriodSeconds = &ttl
c.Fuzz(s.SecurityContext)
if s.SecurityContext == nil {
s.SecurityContext = new(api.PodSecurityContext)
}
},
func(j *api.PodPhase, c fuzz.Continue) {
statuses := []api.PodPhase{api.PodPending, api.PodRunning, api.PodFailed, api.PodUnknown}
*j = statuses[c.Rand.Intn(len(statuses))]
},
func(j *api.Binding, c fuzz.Continue) {
c.Fuzz(&j.ObjectMeta)
j.Target.Name = c.RandString()
},
func(j *api.ReplicationControllerSpec, c fuzz.Continue) {
c.FuzzNoCustom(j) // fuzz self without calling this function again
//j.TemplateRef = nil // this is required for round trip
},
//.........这里部分代码省略.........
开发者ID:timstclair,项目名称:kube-contrib,代码行数:101,代码来源:fuzzer.go
示例11: TestGetJobListFromChannels
func TestGetJobListFromChannels(t *testing.T) {
var jobCompletions int32 = 21
cases := []struct {
k8sRs batch.JobList
k8sRsError error
pods *api.PodList
expected *JobList
expectedError error
}{
{
batch.JobList{},
nil,
&api.PodList{},
&JobList{
ListMeta: common.ListMeta{},
CumulativeMetrics: make([]metric.Metric, 0),
Jobs: []Job{}},
nil,
},
{
batch.JobList{},
errors.New("MyCustomError"),
&api.PodList{},
nil,
errors.New("MyCustomError"),
},
{
batch.JobList{},
&k8serrors.StatusError{},
&api.PodList{},
nil,
&k8serrors.StatusError{},
},
{
batch.JobList{},
&k8serrors.StatusError{ErrStatus: unversioned.Status{}},
&api.PodList{},
nil,
&k8serrors.StatusError{ErrStatus: unversioned.Status{}},
},
{
batch.JobList{},
&k8serrors.StatusError{ErrStatus: unversioned.Status{Reason: "foo-bar"}},
&api.PodList{},
nil,
&k8serrors.StatusError{ErrStatus: unversioned.Status{Reason: "foo-bar"}},
},
{
batch.JobList{},
&k8serrors.StatusError{ErrStatus: unversioned.Status{Reason: "NotFound"}},
&api.PodList{},
&JobList{
Jobs: make([]Job, 0),
},
nil,
},
{
batch.JobList{
Items: []batch.Job{{
ObjectMeta: api.ObjectMeta{
Name: "rs-name",
Namespace: "rs-namespace",
Labels: map[string]string{"key": "value"},
CreationTimestamp: unversioned.Unix(111, 222),
},
Spec: batch.JobSpec{
Selector: &unversioned.LabelSelector{MatchLabels: map[string]string{"foo": "bar"}},
Completions: &jobCompletions,
},
Status: batch.JobStatus{
Active: 7,
},
},
{
ObjectMeta: api.ObjectMeta{
Name: "rs-name",
Namespace: "rs-namespace",
Labels: map[string]string{"key": "value"},
CreationTimestamp: unversioned.Unix(111, 222),
},
Spec: batch.JobSpec{
Selector: &unversioned.LabelSelector{MatchLabels: map[string]string{"foo": "bar"}},
},
Status: batch.JobStatus{
Active: 7,
},
},
},
},
nil,
&api.PodList{
Items: []api.Pod{
{
ObjectMeta: api.ObjectMeta{
Namespace: "rs-namespace",
Labels: map[string]string{"foo": "bar"},
},
Status: api.PodStatus{Phase: api.PodFailed},
},
{
//.........这里部分代码省略.........
开发者ID:digitalfishpond,项目名称:dashboard,代码行数:101,代码来源:joblist_test.go
示例12: TestGetPetSetListFromChannels
func TestGetPetSetListFromChannels(t *testing.T) {
cases := []struct {
k8sRs apps.PetSetList
k8sRsError error
pods *api.PodList
expected *PetSetList
expectedError error
}{
{
apps.PetSetList{},
nil,
&api.PodList{},
&PetSetList{[]PetSet{}},
nil,
},
{
apps.PetSetList{},
errors.New("MyCustomError"),
&api.PodList{},
nil,
errors.New("MyCustomError"),
},
{
apps.PetSetList{},
&k8serrors.StatusError{},
&api.PodList{},
nil,
&k8serrors.StatusError{},
},
{
apps.PetSetList{},
&k8serrors.StatusError{ErrStatus: unversioned.Status{}},
&api.PodList{},
nil,
&k8serrors.StatusError{ErrStatus: unversioned.Status{}},
},
{
apps.PetSetList{},
&k8serrors.StatusError{ErrStatus: unversioned.Status{Reason: "foo-bar"}},
&api.PodList{},
nil,
&k8serrors.StatusError{ErrStatus: unversioned.Status{Reason: "foo-bar"}},
},
{
apps.PetSetList{},
&k8serrors.StatusError{ErrStatus: unversioned.Status{Reason: "NotFound"}},
&api.PodList{},
&PetSetList{
PetSets: make([]PetSet, 0),
},
nil,
},
{
apps.PetSetList{
Items: []apps.PetSet{{
ObjectMeta: api.ObjectMeta{
Name: "rs-name",
Namespace: "rs-namespace",
Labels: map[string]string{"key": "value"},
CreationTimestamp: unversioned.Unix(111, 222),
},
Spec: apps.PetSetSpec{
Selector: &unversioned.LabelSelector{MatchLabels: map[string]string{"foo": "bar"}},
Replicas: 21,
},
Status: apps.PetSetStatus{
Replicas: 7,
},
}},
},
nil,
&api.PodList{
Items: []api.Pod{
{
ObjectMeta: api.ObjectMeta{
Namespace: "rs-namespace",
Labels: map[string]string{"foo": "bar"},
},
Status: api.PodStatus{Phase: api.PodFailed},
},
{
ObjectMeta: api.ObjectMeta{
Namespace: "rs-namespace",
Labels: map[string]string{"foo": "baz"},
},
Status: api.PodStatus{Phase: api.PodFailed},
},
},
},
&PetSetList{
[]PetSet{{
ObjectMeta: common.ObjectMeta{
Name: "rs-name",
Namespace: "rs-namespace",
Labels: map[string]string{"key": "value"},
CreationTimestamp: unversioned.Unix(111, 222),
},
TypeMeta: common.TypeMeta{Kind: common.ResourceKindPetSet},
Pods: common.PodInfo{
Current: 7,
//.........这里部分代码省略.........
开发者ID:FujitsuEnablingSoftwareTechnologyGmbH,项目名称:dashboard,代码行数:101,代码来源:petsetlist_test.go
示例13: timeLess
// compare two unversioned.Time values.
func timeLess(i, j reflect.Value) (bool, bool) {
if i.Type() != reflect.TypeOf(unversioned.Unix(0, 0)) {
return false, false
}
return true, i.MethodByName("Before").Call([]reflect.Value{j})[0].Bool()
}
开发者ID:odacremolbap,项目名称:kubernetes,代码行数:7,代码来源:sorting_printer.go
示例14: TestSyncJobPastDeadline
func TestSyncJobPastDeadline(t *testing.T) {
testCases := map[string]struct {
// job setup
parallelism int
completions int
activeDeadlineSeconds int64
startTime int64
// pod setup
activePods int
succeededPods int
failedPods int
// expectations
expectedDeletions int
expectedActive int
expectedSucceeded int
expectedFailed int
}{
"activeDeadlineSeconds less than single pod execution": {
1, 1, 10, 15,
1, 0, 0,
1, 0, 0, 1,
},
"activeDeadlineSeconds bigger than single pod execution": {
1, 2, 10, 15,
1, 1, 0,
1, 0, 1, 1,
},
"activeDeadlineSeconds times-out before any pod starts": {
1, 1, 10, 10,
0, 0, 0,
0, 0, 0, 0,
},
}
for name, tc := range testCases {
// job manager setup
clientset := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
fakePodControl := controller.FakePodControl{}
manager.podControl = &fakePodControl
manager.podStoreSynced = alwaysReady
var actual *extensions.Job
manager.updateHandler = func(job *extensions.Job) error {
actual = job
return nil
}
// job & pods setup
job := newJob(tc.parallelism, tc.completions)
job.Spec.ActiveDeadlineSeconds = &tc.activeDeadlineSeconds
start := unversioned.Unix(unversioned.Now().Time.Unix()-tc.startTime, 0)
job.Status.StartTime = &start
manager.jobStore.Store.Add(job)
for _, pod := range newPodList(tc.activePods, api.PodRunning, job) {
manager.podStore.Store.Add(&pod)
}
for _, pod := range newPodList(tc.succeededPods, api.PodSucceeded, job) {
manager.podStore.Store.Add(&pod)
}
for _, pod := range newPodList(tc.failedPods, api.PodFailed, job) {
manager.podStore.Store.Add(&pod)
}
// run
err := manager.syncJob(getKey(job, t))
if err != nil {
t.Errorf("%s: unexpected error when syncing jobs %v", err)
}
// validate created/deleted pods
if len(fakePodControl.Templates) != 0 {
t.Errorf("%s: unexpected number of creates. Expected 0, saw %d\n", name, len(fakePodControl.Templates))
}
if len(fakePodControl.DeletePodName) != tc.expectedDeletions {
t.Errorf("%s: unexpected number of deletes. Expected %d, saw %d\n", name, tc.expectedDeletions, len(fakePodControl.DeletePodName))
}
// validate status
if actual.Status.Active != tc.expectedActive {
t.Errorf("%s: unexpected number of active pods. Expected %d, saw %d\n", name, tc.expectedActive, actual.Status.Active)
}
if actual.Status.Succeeded != tc.expectedSucceeded {
t.Errorf("%s: unexpected number of succeeded pods. Expected %d, saw %d\n", name, tc.expectedSucceeded, actual.Status.Succeeded)
}
if actual.Status.Failed != tc.expectedFailed {
t.Errorf("%s: unexpected number of failed pods. Expected %d, saw %d\n", name, tc.expectedFailed, actual.Status.Failed)
}
if actual.Status.StartTime == nil {
t.Errorf("%s: .status.startTime was not set", name)
}
// validate conditions
if !getCondition(actual, extensions.JobFailed) {
t.Errorf("%s: expected fail condition. Got %#v", name, actual.Status.Conditions)
}
}
}
开发者ID:Victorliautaud,项目名称:kubernetes,代码行数:97,代码来源:controller_test.go
示例15: TestDescribeBuildDuration
func TestDescribeBuildDuration(t *testing.T) {
type testBuild struct {
build *buildapi.Build
output string
}
creation := unversioned.Date(2015, time.April, 9, 6, 0, 0, 0, time.Local)
// now a minute ago
minuteAgo := unversioned.Unix(unversioned.Now().Rfc3339Copy().Time.Unix()-60, 0)
start := unversioned.Date(2015, time.April, 9, 6, 1, 0, 0, time.Local)
completion := unversioned.Date(2015, time.April, 9, 6, 2, 0, 0, time.Local)
duration := completion.Rfc3339Copy().Time.Sub(start.Rfc3339Copy().Time)
zeroDuration := time.Duration(0)
tests := []testBuild{
{ // 0 - build new
&buildapi.Build{
ObjectMeta: kapi.ObjectMeta{CreationTimestamp: minuteAgo},
Status: buildapi.BuildStatus{
Phase: buildapi.BuildPhaseNew,
Duration: zeroDuration,
},
},
"waiting for 1m0s",
},
{ // 1 - build pending
&buildapi.Build{
ObjectMeta: kapi.ObjectMeta{CreationTimestamp: minuteAgo},
Status: buildapi.BuildStatus{
Phase: buildapi.BuildPhasePending,
Duration: zeroDuration,
},
},
"waiting for 1m0s",
},
{ // 2 - build running
&buildapi.Build{
ObjectMeta: kapi.ObjectMeta{CreationTimestamp: creation},
Status: buildapi.BuildStatus{
StartTimestamp: &start,
Phase: buildapi.BuildPhaseRunning,
Duration: duration,
},
},
"running for 1m0s",
},
{ // 3 - build completed
&buildapi.Build{
ObjectMeta: kapi.ObjectMeta{CreationTimestamp: creation},
Status: buildapi.BuildStatus{
StartTimestamp: &start,
CompletionTimestamp: &completion,
Phase: buildapi.BuildPhaseComplete,
Duration: duration,
},
},
"1m0s",
},
{ // 4 - build failed
&buildapi.Build{
ObjectMeta: kapi.ObjectMeta{CreationTimestamp: creation},
Status: buildapi.BuildStatus{
StartTimestamp: &start,
CompletionTimestamp: &completion,
Phase: buildapi.BuildPhaseFailed,
Duration: duration,
},
},
"1m0s",
},
{ // 5 - build error
&buildapi.Build{
ObjectMeta: kapi.ObjectMeta{CreationTimestamp: creation},
Status: buildapi.BuildStatus{
StartTimestamp: &start,
CompletionTimestamp: &completion,
Phase: buildapi.BuildPhaseError,
Duration: duration,
},
},
"1m0s",
},
{ // 6 - build cancelled before running, start time wasn't set yet
&buildapi.Build{
ObjectMeta: kapi.ObjectMeta{CreationTimestamp: creation},
Status: buildapi.BuildStatus{
CompletionTimestamp: &completion,
Phase: buildapi.BuildPhaseCancelled,
Duration: duration,
},
},
"waited for 2m0s",
},
{ // 7 - build cancelled while running, start time is set already
&buildapi.Build{
ObjectMeta: kapi.ObjectMeta{CreationTimestamp: creation},
Status: buildapi.BuildStatus{
StartTimestamp: &start,
CompletionTimestamp: &completion,
Phase: buildapi.BuildPhaseCancelled,
//.........这里部分代码省略.........
开发者ID:piggyvenus,项目名称:origin,代码行数:101,代码来源:describer_test.go
示例16: FuzzerFor
// FuzzerFor can randomly populate api objects that are destined for version.
func FuzzerFor(t *testing.T, version schema.GroupVersion, src rand.Source) *fuzz.Fuzzer {
f := fuzz.New().NilChance(.5).NumElements(1, 1)
if src != nil {
f.RandSource(src)
}
f.Funcs(
func(j *int, c fuzz.Continue) {
*j = int(c.Int31())
},
func(j **int, c fuzz.Continue) {
if c.RandBool() {
i := int(c.Int31())
*j = &i
} else {
*j = nil
}
},
func(q *resource.Quantity, c fuzz.Continue) {
*q = *resource.NewQuantity(c.Int63n(1000), resource.DecimalExponent)
},
func(j *runtime.TypeMeta, c fuzz.Continue) {
// We have to customize the randomization of TypeMetas because their
// APIVersion and Kind must remain blank in memory.
j.APIVersion = ""
j.Kind = ""
},
func(j *unversioned.TypeMeta, c fuzz.Continue) {
// We have to customize the randomization of TypeMetas because their
// APIVersion and Kind must remain blank in memory.
j.APIVersion = ""
j.Kind = ""
},
func(j *api.ObjectMeta, c fuzz.Continue) {
j.Name = c.RandString()
j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10)
j.SelfLink = c.RandString()
j.UID = types.UID(c.RandString())
j.GenerateName = c.RandString()
var sec, nsec int64
c.Fuzz(&sec)
c.Fuzz(&nsec)
j.CreationTimestamp = unversioned.Unix(sec, nsec).Rfc3339Copy()
},
func(j *api.ObjectReference, c fuzz.Continue) {
// We have to customize the randomization of TypeMetas because their
// APIVersion and Kind must remain blank in memory.
j.APIVersion = c.RandString()
j.Kind = c.RandString()
j.Namespace = c.RandString()
j.Name = c.RandString()
j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10)
j.FieldPath = c.RandString()
},
func(j *unversioned.ListMeta, c fuzz.Continue) {
j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10)
j.SelfLink = c.RandString()
},
func(j *api.ListOptions, c fuzz.Continue) {
label, _ := labels.Parse("a=b")
j.LabelSelector = label
field, _ := fields.ParseSelector("a=b")
j.FieldSelector = field
},
func(j *api.PodExecOptions, c fuzz.Continue) {
j.Stdout = true
j.Stderr = true
},
func(j *api.PodAttachOptions, c fuzz.Continue) {
j.Stdout = true
j.Stderr = true
},
func(s *api.PodSpec, c fuzz.Continue) {
c.FuzzNoCustom(s)
// has a default value
ttl := int64(30)
if c.RandBool() {
ttl = int64(c.Uint32())
}
s.TerminationGracePeriodSeconds = &ttl
c.Fuzz(s.SecurityContext)
if s.SecurityContext == nil {
s.SecurityContext = new(api.PodSecurityContext)
}
},
func(j *api.PodPhase, c fuzz.Continue) {
statuses := []api.PodPhase{api.PodPending, api.PodRunning, api.PodFailed, api.PodUnknown}
*j = statuses[c.Rand.Intn(len(statuses))]
},
func(j *api.Binding, c fuzz.Continue) {
c.Fuzz(&j.ObjectMeta)
j.Target.Name = c.RandString()
},
func(j *api.ReplicationControllerSpec, c fuzz.Continue) {
c.FuzzNoCustom(j) // fuzz self without calling this function again
//j.TemplateRef = nil // this is required for round trip
},
//.........这里部分代码省略.........
开发者ID:paralin,项目名称:kubernetes,代码行数:101,代码来源:fuzzer.go
示例17: FuzzerFor
// FuzzerFor can randomly populate api objects that are destined for version.
func FuzzerFor(t *testing.T, version string, src rand.Source) *fuzz.Fuzzer {
f := fuzz.New().NilChance(.5).NumElements(1, 1)
if src != nil {
f.RandSource(src)
}
f.Funcs(
func(j *runtime.PluginBase, c fuzz.Continue) {
// Do nothing; this struct has only a Kind field and it must stay blank in memory.
},
func(j *runtime.TypeMeta, c fuzz.Continue) {
// We have to customize the randomization of TypeMetas because their
// APIVersion and Kind must remain blank in memory.
j.APIVersion = ""
j.Kind = ""
},
func(j *unversioned.TypeMeta, c fuzz.Continue) {
// We have to customize the randomization of TypeMetas because their
// APIVersion and Kind must remain blank in memory.
j.APIVersion = ""
j.Kind = ""
},
func(j *api.ObjectMeta, c fuzz.Continue) {
j.Name = c.RandString()
j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10)
j.SelfLink = c.RandString()
j.UID = types.UID(c.RandString())
j.GenerateName = c.RandString()
var sec, nsec int64
c.Fuzz(&sec)
c.Fuzz(&nsec)
j.CreationTimestamp = unversioned.Unix(sec, nsec).Rfc3339Copy()
},
func(j *api.ObjectReference, c fuzz.Continue) {
// We have to customize the randomization of TypeMetas because their
// APIVersion and Kind must remain blank in memory.
j.APIVersion = c.RandString()
j.Kind = c.RandString()
j.Namespace = c.RandString()
j.Name = c.RandString()
j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10)
j.FieldPath = c.RandString()
},
func(j *unversioned.ListMeta, c fuzz.Continue) {
j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10)
j.SelfLink = c.RandString()
},
func(j *api.ListOptions, c fuzz.Continue) {
// TODO: add some parsing
j.LabelSelector, _ = labels.Parse("a=b")
j.FieldSelector, _ = fields.ParseSelector("a=b")
},
func(s *api.PodSpec, c fuzz.Continue) {
c.FuzzNoCustom(s)
// has a default value
ttl := int64(30)
if c.RandBool() {
ttl = int64(c.Uint32())
}
s.TerminationGracePeriodSeconds = &ttl
if s.SecurityContext == nil {
s.SecurityContext = &api.PodSecurityContext{}
}
},
func(j *api.PodPhase, c fuzz.Continue) {
statuses := []api.PodPhase{api.PodPending, api.PodRunning, api.PodFailed, api.PodUnknown}
*j = statuses[c.Rand.Intn(len(statuses))]
},
func(j *api.PodTemplateSpec, c fuzz.Continue) {
// TODO: v1beta1/2 can't round trip a nil template correctly, fix by having v1beta1/2
// conversion compare converted object to nil via DeepEqual
j.ObjectMeta = api.ObjectMeta{}
c.Fuzz(&j.ObjectMeta)
j.ObjectMeta = api.ObjectMeta{Labels: j.ObjectMeta.Labels}
j.Spec = api.PodSpec{}
c.Fuzz(&j.Spec)
},
func(j *api.Binding, c fuzz.Continue) {
c.Fuzz(&j.ObjectMeta)
j.Target.Name = c.RandString()
},
func(j *api.ReplicationControllerSpec, c fuzz.Continue) {
c.FuzzNoCustom(j) // fuzz self without calling this function again
//j.TemplateRef = nil // this is required for round trip
},
func(j *experimental.DeploymentStrategy, c fuzz.Continue) {
c.FuzzNoCustom(j) // fuzz self without calling this function again
// Ensure that strategyType is one of valid values.
strategyTypes := []experimental.DeploymentStrategyType{experimental.RecreateDeploymentStrategyType, experimental.RollingUpdateDeploymentStrategyType}
j.Type = strategyTypes[c.Rand.Intn(len(strategyTypes))]
if j.Type != experimental.RollingUpdateDeploymentStrategyType {
j.RollingUpdate = nil
} else {
rollingUpdate := experimental.RollingUpdateDeployment{}
if c.RandBool() {
rollingUpdate.MaxUnavailable = util.NewIntOrStringFromInt(int(c.RandUint64()))
rollingUpdate.MaxSurge = util.NewIntOrStringFromInt(int(c.RandUint64()))
} else {
//.........这里部分代码省略.........
开发者ID:GunnarSturla,项目名称:kubernetes,代码行数:101,代码来源:fuzzer.go
注:本文中的k8s/io/kubernetes/pkg/api/unversioned.Unix函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论