*ngIf="clog">
<div class="btn-group"
role="group"
- (click)="logToText(clog)"
*ngIf="clog.length">
<cd-download-button [objectItem]="clog"
- [textItem]="logText"
+ [textItem]="clogText"
fileName="cluster_log">
</cd-download-button>
<cd-copy-2-clipboard-button
- [source]="logText"
+ [source]="clogText"
[byId]="false">
</cd-copy-2-clipboard-button>
</div>
*ngIf="audit_log">
<div class="btn-group"
role="group"
- (click)="logToText(audit_log)"
*ngIf="audit_log.length">
<cd-download-button [objectItem]="audit_log"
- [textItem]="logText"
+ [textItem]="auditLogText"
fileName="audit_log">
</cd-download-button>
<cd-copy-2-clipboard-button
- [source]="logText"
+ [source]="auditLogText"
[byId]="false">
</cd-copy-2-clipboard-button>
</div>
import { FormsModule } from '@angular/forms';
import { NgbDatepickerModule, NgbNavModule, NgbTimepickerModule } from '@ng-bootstrap/ng-bootstrap';
+import { ToastrModule } from 'ngx-toastr';
+import { of } from 'rxjs';
+import { LogsService } from '~/app/shared/api/logs.service';
import { SharedModule } from '~/app/shared/shared.module';
import { configureTestBed } from '~/testing/unit-test-helper';
import { LogsComponent } from './logs.component';
describe('LogsComponent', () => {
let component: LogsComponent;
let fixture: ComponentFixture<LogsComponent>;
+ let logsService: LogsService;
+ let logsServiceSpy: jasmine.Spy;
configureTestBed({
imports: [
SharedModule,
FormsModule,
NgbDatepickerModule,
- NgbTimepickerModule
+ NgbTimepickerModule,
+ ToastrModule.forRoot()
],
declarations: [LogsComponent]
});
beforeEach(() => {
+ logsService = TestBed.inject(LogsService);
+ logsServiceSpy = spyOn(logsService, 'getLogs');
+ logsServiceSpy.and.returnValue(of(null));
fixture = TestBed.createComponent(LogsComponent);
component = fixture.componentInstance;
- fixture.detectChanges();
});
it('should create', () => {
expect(component.clog[0].name).toBe('time');
});
});
+
+ describe('convert logs to text', () => {
+ it('convert cluster & audit logs to text', () => {
+ const logsPayload = {
+ clog: [
+ {
+ name: 'priority',
+ stamp: '2019-02-21 09:39:49.572801',
+ message: 'Manager daemon localhost is now available',
+ priority: '[ERR]'
+ }
+ ],
+ audit_log: [
+ {
+ stamp: '2020-12-22T11:18:13.896920+0000',
+ priority: '[INF]'
+ }
+ ]
+ };
+ logsServiceSpy.and.returnValue(of(logsPayload));
+ fixture.detectChanges();
+ expect(component.clogText).toContain(logsPayload.clog[0].message);
+ expect(component.auditLogText).toContain(logsPayload.audit_log[0].priority);
+ });
+ });
});
clog: Array<any>;
audit_log: Array<any>;
icons = Icons;
- logText: string;
+ clogText: string;
+ auditLogText: string;
interval: number;
priorities: Array<{ name: string; value: string }> = [
getInfo() {
this.logsService.getLogs().subscribe((data: any) => {
this.contentData = data;
+ this.clogText = this.logToText(this.contentData.clog);
+ this.auditLogText = this.logToText(this.contentData.audit_log);
this.filterLogs();
});
}
}
logToText(log: object) {
- this.logText = '';
+ let logText = '';
for (const line of Object.keys(log)) {
- this.logText =
- this.logText +
+ logText =
+ logText +
this.datePipe.transform(log[line].stamp, 'medium') +
'\t' +
log[line].priority +
log[line].message +
'\n';
}
+ return logText;
}
}