mirror of https://github.com/sipwise/repoapi.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
3.2 KiB
105 lines
3.2 KiB
# Copyright (C) 2022 The Sipwise Team - http://sipwise.com
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by the Free
|
|
# Software Foundation, either version 3 of the License, or (at your option)
|
|
# any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
# more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
from datetime import datetime
|
|
from unittest.mock import mock_open
|
|
from unittest.mock import patch
|
|
|
|
from django.utils import timezone
|
|
|
|
from buildinfo import models
|
|
from buildinfo import utils
|
|
from repoapi.models import JenkinsBuildInfo
|
|
from repoapi.test.base import BaseTest
|
|
|
|
build_info = """{
|
|
"building": false,
|
|
"description": null,
|
|
"displayName": "#9000",
|
|
"duration": 55479,
|
|
"estimatedDuration": 62270,
|
|
"executor": null,
|
|
"fullDisplayName": "upgrade-binaries #9000",
|
|
"id": "9000",
|
|
"keepLog": false,
|
|
"number": 9000,
|
|
"queueId": 4582301,
|
|
"result": "SUCCESS",
|
|
"timestamp": 1668083617940,
|
|
"url": "https://jenkins-dev.mgm.sipwise.com/job/upgrade-binaries/9000/",
|
|
"builtOn": "jenkins-slave13",
|
|
"changeSet": {
|
|
"_class": "hudson.scm.EmptyChangeLogSet",
|
|
"items": [],
|
|
"kind": null
|
|
},
|
|
"culprits": []}"""
|
|
|
|
|
|
class TestBuildInfo(BaseTest):
|
|
dt = datetime(
|
|
2022,
|
|
11,
|
|
10,
|
|
12,
|
|
33,
|
|
37,
|
|
940000,
|
|
tzinfo=timezone.get_current_timezone(),
|
|
)
|
|
|
|
def get_defaults(self, info=False):
|
|
defaults = {
|
|
"projectname": "fake",
|
|
"jobname": "upgrade-binaries",
|
|
"buildnumber": 1,
|
|
"param_tag": "none",
|
|
"param_branch": "mr4.5",
|
|
"param_release": "none",
|
|
"param_distribution": "wheezy",
|
|
"param_ppa": "gerrit_MT10339_review2054",
|
|
}
|
|
jbi_defaults = {
|
|
"tag": "edc90cd9-37f3-4613-9748-ed05a32031c2",
|
|
"result": "SUCCESS",
|
|
"job_url": "https://jenkins.mgm.sipwise.com/job/upgrade-binaries/",
|
|
"git_commit_msg": "7fg4567 TT#0001 whatever",
|
|
}
|
|
if info:
|
|
defaults.update(
|
|
{
|
|
"builton": "fake-slave-1",
|
|
"datetime": 1668083617940,
|
|
"duration": 0,
|
|
}
|
|
)
|
|
return defaults
|
|
defaults.update(jbi_defaults)
|
|
return defaults
|
|
|
|
def test_get_datetime(self):
|
|
self.assertEqual(utils.get_datetime(1668083617940), self.dt)
|
|
|
|
@patch("builtins.open", mock_open(read_data=build_info))
|
|
@patch("repoapi.utils.dlfile")
|
|
def test_process_buildinfo(self, dlfile):
|
|
qs = models.BuildInfo.objects.all()
|
|
self.assertEqual(qs.count(), 0)
|
|
param = self.get_defaults()
|
|
jbi = JenkinsBuildInfo.objects.create(**param)
|
|
utils.process_buildinfo(jbi.pk, "/tmp/fake.txt")
|
|
qs = models.BuildInfo.objects.filter(builton="jenkins-slave13")
|
|
self.assertEqual(qs.count(), 1)
|
|
self.assertEqual(qs.first().datetime, self.dt)
|