public logSummary()

in Extensions/ArtifactEngine/Engine/logger.ts [57:119]


    public logSummary(): void {
        var allTickets = this.store.getTickets();
        var fileTickets = allTickets.filter(x => x.artifactItem.itemType == ItemType.File);

        var finishedItems = fileTickets.filter(x => x.state == TicketState.Processed || x.state == TicketState.Skipped || x.state == TicketState.Failed);
        var processedItems = fileTickets.filter(x => x.state == TicketState.Processed);
        var skippedItems = fileTickets.filter(x => x.state == TicketState.Skipped);
        var failedItems = fileTickets.filter(x => x.state == TicketState.Failed);

        var downloadSizeInBytes = 0;
        var fileSizeInBytes = 0;

        for (var ticket of fileTickets) {
            downloadSizeInBytes += ticket.downloadSizeInBytes;
            fileSizeInBytes += ticket.fileSizeInBytes;
        }

        var downloadSizeInMB = (downloadSizeInBytes / (1024 * 1024));

        var endTime = new Date();
        var downloadTime = (endTime.valueOf() - this.startTime.valueOf()) / 1000;
        console.log(
            tl.loc("DownloadSummary", 
                    fileTickets.length, 
                    processedItems.length, 
                    skippedItems.length, 
                    failedItems.length, 
                    downloadTime, 
                    (downloadSizeInMB > 1 ? downloadSizeInMB.toFixed(3) + "MB" : downloadSizeInBytes + "Bytes")));

        ci.publishEvent('performance',
            {
                location: this.store.getRootLocation(),
                total: allTickets.length,
                files: fileTickets.length,
                processed: processedItems.length,
                skipped: skippedItems.length,
                failed: failedItems.length,
                downloadTimeInSeconds: downloadTime,
                downloadSizeInBytes: downloadSizeInBytes,
                fileSizeInBytes: fileSizeInBytes
            });

        if (Logger.verbose) {
            tl.debug("Summary:");
            var pathLengths = finishedItems.map(x => x.artifactItem.path.length);
            var maxPathLength = pathLengths.reduce((a, b) => a > b ? a : b, 1);
            var fileHeader = this.padText("File", maxPathLength);
            var startTimeHeader = this.padText("Start Time", 25);
            var finishTimeHeader = this.padText("Finish Time", 25);
            var durationHeader = this.padText("Duration", 10);
            var stateHeader = this.padText("STATE", 10);

            tl.debug(this.padText("", maxPathLength + 25 + 25 + 10 + 10 + 15, '-'))
            tl.debug(`| ${fileHeader} | ${startTimeHeader} | ${finishTimeHeader} | ${durationHeader} | ${stateHeader}|`)
            tl.debug(this.padText("", maxPathLength + 25 + 25 + 10 + 10 + 15, '-'))
            fileTickets.forEach(ticket => {
                var duration = (ticket.finishTime.valueOf() - ticket.startTime.valueOf()) / 1000 + " secs";
                tl.debug("| " + this.padText(ticket.artifactItem.path, maxPathLength) + " | " + this.padText(ticket.startTime.toISOString(), 25) + " | " + this.padText(ticket.finishTime.toISOString(), 25) + " | " + this.padText(duration, 10) + " | " + this.padText(ticket.state.toString().toUpperCase(), 10) + "|");
                tl.debug(this.padText("", maxPathLength + 25 + 25 + 10 + 10 + 15, '-'))
            });
        }
    }