public void StartShallRunThrough() { var mockClient = new Mock <IJobsClient>(); var mockLogger = new Mock <ILogger <ClaraJobsApi> >(); var job = new Job { JobId = "valid-job-id", PayloadId = "payloadid" }; JobId.TryParse(job.JobId, out JobId jobId); mockClient.Setup(p => p.StartJob(It.IsAny <JobId>(), It.IsAny <List <KeyValuePair <string, string> > >())) .ReturnsAsync(new JobToken { JobId = jobId, JobState = JobState.Pending, JobStatus = Nvidia.Clara.Platform.JobStatus.Healthy }); var service = new ClaraJobsApi( mockClient.Object, mockLogger.Object); service.Start(job).Wait(); mockClient.Verify( p => p.StartJob(It.IsAny <JobId>(), It.IsAny <List <KeyValuePair <string, string> > >()), Times.Exactly(1)); mockLogger.VerifyLogging(LogLevel.Error, Times.Never()); mockLogger.VerifyLogging(LogLevel.Information, Times.Once()); }
public async Task Create_ShallReturnAJob() { var mockClient = new Mock <IJobsClient>(); var mockLogger = new Mock <ILogger <ClaraJobsApi> >(); JobId.TryParse("jobid", out JobId jobId); PayloadId.TryParse("payloadid", out PayloadId payloadId); PipelineId.TryParse("pipelineid", out PipelineId pipelineId); mockClient.Setup(p => p.CreateJob(It.IsAny <PipelineId>(), It.IsAny <string>(), It.IsAny <JobPriority>())) .ReturnsAsync(new JobInfo { Name = "bla bla job", JobId = jobId, PayloadId = payloadId, PipelineId = pipelineId }); var service = new ClaraJobsApi( mockClient.Object, mockLogger.Object); var job = await service.Create(Guid.NewGuid().ToString(), "bla bla", JobPriority.Higher); Assert.Equal(jobId.ToString(), job.JobId); Assert.Equal(payloadId.ToString(), job.PayloadId); mockClient.Verify( p => p.CreateJob(It.IsAny <PipelineId>(), It.IsAny <string>(), JobPriority.Higher), Times.Exactly(1)); mockLogger.VerifyLogging(LogLevel.Information, Times.Once()); mockLogger.VerifyLogging(LogLevel.Error, Times.Never()); }
public void Start_ShallThrowOnBadPipelineId() { var mockClient = new Mock <IJobsClient>(); var mockLogger = new Mock <ILogger <ClaraJobsApi> >(); mockClient.Setup(p => p.StartJob(It.IsAny <JobId>(), It.IsAny <List <KeyValuePair <string, string> > >())); var service = new ClaraJobsApi(mockClient.Object, mockLogger.Object); var job = new Job { JobId = "bad job id has spaces", PayloadId = "payloadid" }; var exception = Assert.Throws <AggregateException>(() => { service.Start(job).Wait(); }); Assert.IsType <ApplicationException>(exception.InnerException); mockClient.Verify( p => p.StartJob(It.IsAny <JobId>(), It.IsAny <List <KeyValuePair <string, string> > >()), Times.Never()); mockLogger.VerifyLogging(LogLevel.Error, Times.Exactly(3)); }
public void Start_ShallRespectRetryPolicyOnFailure() { var mockClient = new Mock <IJobsClient>(); var mockLogger = new Mock <ILogger <ClaraJobsApi> >(); mockClient.Setup(p => p.StartJob(It.IsAny <JobId>(), It.IsAny <List <KeyValuePair <string, string> > >())) .Throws(new RpcException(Status.DefaultCancelled)); var service = new ClaraJobsApi(mockClient.Object, mockLogger.Object); var job = new Job { JobId = "valid-job-id", PayloadId = "payloadid" }; var exception = Assert.Throws <AggregateException>(() => { service.Start(job).Wait(); }); Assert.IsType <RpcException>(exception.InnerException); mockClient.Verify( p => p.StartJob(It.IsAny <JobId>(), It.IsAny <List <KeyValuePair <string, string> > >()), Times.Exactly(4)); mockLogger.VerifyLogging(LogLevel.Error, Times.Exactly(3)); }
public void AddMetadata_ShallRunThrough() { var mockClient = new Mock <IJobsClient>(); var mockLogger = new Mock <ILogger <ClaraJobsApi> >(); var jobId = Guid.NewGuid().ToString("N"); var jobDate = DateTime.UtcNow; JobId.TryParse(jobId, out JobId jobIdObj); mockClient.Setup(p => p.AddMetadata(It.IsAny <JobId>(), It.IsAny <Dictionary <string, string> >())); var service = new ClaraJobsApi( mockClient.Object, mockLogger.Object); var job = new Job { JobId = Guid.NewGuid().ToString("N"), PayloadId = Guid.NewGuid().ToString("N") }; service.AddMetadata(job, new Dictionary <string, string>()).Wait(); mockClient.Verify( p => p.AddMetadata(It.IsAny <JobId>(), It.IsAny <Dictionary <string, string> >()), Times.Exactly(1)); mockLogger.VerifyLogging(LogLevel.Error, Times.Never()); mockLogger.VerifyLogging(LogLevel.Information, Times.Once()); }
public void AddMetadata_ShallRespectRetryPolicyOnFailure() { var mockClient = new Mock <IJobsClient>(); var mockLogger = new Mock <ILogger <ClaraJobsApi> >(); mockClient.Setup(p => p.AddMetadata(It.IsAny <JobId>(), It.IsAny <Dictionary <string, string> >())) .Throws(new RpcException(Status.DefaultCancelled)); var service = new ClaraJobsApi(mockClient.Object, mockLogger.Object); var job = new Job { JobId = Guid.NewGuid().ToString("N"), PayloadId = Guid.NewGuid().ToString("N") }; var exception = Assert.Throws <AggregateException>(() => { service.AddMetadata(job, new Dictionary <string, string>()).Wait(); }); Assert.IsType <RpcException>(exception.InnerException); mockClient.Verify( p => p.AddMetadata(It.IsAny <JobId>(), It.IsAny <Dictionary <string, string> >()), Times.Exactly(2)); mockLogger.VerifyLogging(LogLevel.Error, Times.Exactly(1)); }
public void AddMetadata_ShallThrowOnBadPipelineId() { var mockClient = new Mock <IJobsClient>(); var mockLogger = new Mock <ILogger <ClaraJobsApi> >(); mockClient.Setup(p => p.AddMetadata(It.IsAny <JobId>(), It.IsAny <Dictionary <string, string> >())); var service = new ClaraJobsApi(mockClient.Object, mockLogger.Object); var job = new Job { JobId = "bad job id has spaces", PayloadId = "12345" }; var exception = Assert.Throws <AggregateException>(() => { service.AddMetadata(job, new Dictionary <string, string>()).Wait(); }); Assert.IsType <ArgumentException>(exception.InnerException); mockClient.Verify( p => p.AddMetadata(It.IsAny <JobId>(), It.IsAny <Dictionary <string, string> >()), Times.Never()); mockLogger.VerifyLogging(LogLevel.Error, Times.Exactly(1)); }
public void StatusShallRunThrough() { var mockClient = new Mock <IJobsClient>(); var mockLogger = new Mock <ILogger <ClaraJobsApi> >(); var jobId = Guid.NewGuid().ToString("N"); var jobDate = DateTime.UtcNow; JobId.TryParse(jobId, out JobId jobIdObj); mockClient.Setup(p => p.GetStatus(It.IsAny <JobId>())) .ReturnsAsync(new JobDetails { JobId = jobIdObj, JobState = JobState.Pending, JobStatus = Nvidia.Clara.Platform.JobStatus.Healthy, DateCreated = jobDate, DateStarted = jobDate, DateStopped = jobDate, JobPriority = JobPriority.Higher, Name = "name" }); var service = new ClaraJobsApi( mockClient.Object, mockLogger.Object); service.Status(jobId).Wait(); mockClient.Verify( p => p.GetStatus(It.IsAny <JobId>()), Times.Exactly(1)); mockLogger.VerifyLogging(LogLevel.Error, Times.Never()); mockLogger.VerifyLogging(LogLevel.Information, Times.Once()); }
public void Create_ShallThrowOnBadPipelineId() { var mockClient = new Mock <IJobsClient>(); var mockLogger = new Mock <ILogger <ClaraJobsApi> >(); mockClient.Setup(p => p.CreateJob(It.IsAny <PipelineId>(), It.IsAny <string>())); var service = new ClaraJobsApi(mockClient.Object, mockLogger.Object); var exception = Assert.Throws <AggregateException>(() => { service.Create("bad pipeline id", "bla bla", JobPriority.Higher).Wait(); }); Assert.IsType <ConfigurationException>(exception.InnerException); mockClient.Verify( p => p.CreateJob(It.IsAny <PipelineId>(), It.IsAny <string>(), JobPriority.Higher), Times.Never()); mockLogger.VerifyLogging(LogLevel.Error, Times.Exactly(3)); }
public void Create_ShallRespectRetryPolicyOnFailure() { var mockClient = new Mock <IJobsClient>(); var mockLogger = new Mock <ILogger <ClaraJobsApi> >(); mockClient.Setup(p => p.CreateJob(It.IsAny <PipelineId>(), It.IsAny <string>(), It.IsAny <JobPriority>())) .Throws(new RpcException(Status.DefaultCancelled)); var service = new ClaraJobsApi(mockClient.Object, mockLogger.Object); var exception = Assert.Throws <AggregateException>(() => { service.Create("valid-pipeline-id", "bla bla", JobPriority.Lower).Wait(); }); Assert.IsType <RpcException>(exception.InnerException); mockClient.Verify( p => p.CreateJob(It.IsAny <PipelineId>(), It.IsAny <string>(), JobPriority.Lower), Times.Exactly(4)); mockLogger.VerifyLogging(LogLevel.Error, Times.Exactly(3)); }
public void Status_ShallThrowOnBadPipelineId() { var mockClient = new Mock <IJobsClient>(); var mockLogger = new Mock <ILogger <ClaraJobsApi> >(); mockClient.Setup(p => p.GetStatus(It.IsAny <JobId>())); var service = new ClaraJobsApi(mockClient.Object, mockLogger.Object); var jobId = "bad job id has spaces"; var exception = Assert.Throws <AggregateException>(() => { service.Status(jobId).Wait(); }); Assert.IsType <ArgumentException>(exception.InnerException); mockClient.Verify( p => p.GetStatus(It.IsAny <JobId>()), Times.Never()); mockLogger.VerifyLogging(LogLevel.Error, Times.Exactly(1)); }