123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- #
- # Copyright (c) 2011 The Chromium OS Authors.
- #
- # SPDX-License-Identifier: GPL-2.0+
- #
- import os
- import tempfile
- import unittest
- import checkpatch
- import gitutil
- import patchstream
- import series
- class TestPatch(unittest.TestCase):
- """Test this program
- TODO: Write tests for the rest of the functionality
- """
- def testBasic(self):
- """Test basic filter operation"""
- data='''
- From 656c9a8c31fa65859d924cd21da920d6ba537fad Mon Sep 17 00:00:00 2001
- From: Simon Glass <sjg@chromium.org>
- Date: Thu, 28 Apr 2011 09:58:51 -0700
- Subject: [PATCH (resend) 3/7] Tegra2: Add more clock support
- This adds functions to enable/disable clocks and reset to on-chip peripherals.
- BUG=chromium-os:13875
- TEST=build U-Boot for Seaboard, boot
- Change-Id: I80fe1d0c0b7dd10aa58ce5bb1d9290b6664d5413
- Review URL: http://codereview.chromium.org/6900006
- Signed-off-by: Simon Glass <sjg@chromium.org>
- ---
- arch/arm/cpu/armv7/tegra2/Makefile | 2 +-
- arch/arm/cpu/armv7/tegra2/ap20.c | 57 ++----
- arch/arm/cpu/armv7/tegra2/clock.c | 163 +++++++++++++++++
- '''
- expected='''
- From 656c9a8c31fa65859d924cd21da920d6ba537fad Mon Sep 17 00:00:00 2001
- From: Simon Glass <sjg@chromium.org>
- Date: Thu, 28 Apr 2011 09:58:51 -0700
- Subject: [PATCH (resend) 3/7] Tegra2: Add more clock support
- This adds functions to enable/disable clocks and reset to on-chip peripherals.
- Signed-off-by: Simon Glass <sjg@chromium.org>
- ---
- arch/arm/cpu/armv7/tegra2/Makefile | 2 +-
- arch/arm/cpu/armv7/tegra2/ap20.c | 57 ++----
- arch/arm/cpu/armv7/tegra2/clock.c | 163 +++++++++++++++++
- '''
- out = ''
- inhandle, inname = tempfile.mkstemp()
- infd = os.fdopen(inhandle, 'w')
- infd.write(data)
- infd.close()
- exphandle, expname = tempfile.mkstemp()
- expfd = os.fdopen(exphandle, 'w')
- expfd.write(expected)
- expfd.close()
- patchstream.FixPatch(None, inname, series.Series(), None)
- rc = os.system('diff -u %s %s' % (inname, expname))
- self.assertEqual(rc, 0)
- os.remove(inname)
- os.remove(expname)
- def GetData(self, data_type):
- data='''
- From 4924887af52713cabea78420eff03badea8f0035 Mon Sep 17 00:00:00 2001
- From: Simon Glass <sjg@chromium.org>
- Date: Thu, 7 Apr 2011 10:14:41 -0700
- Subject: [PATCH 1/4] Add microsecond boot time measurement
- This defines the basics of a new boot time measurement feature. This allows
- logging of very accurate time measurements as the boot proceeds, by using
- an available microsecond counter.
- %s
- ---
- README | 11 ++++++++
- common/bootstage.c | 50 ++++++++++++++++++++++++++++++++++++
- include/bootstage.h | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++
- include/common.h | 8 ++++++
- 5 files changed, 141 insertions(+), 0 deletions(-)
- create mode 100644 common/bootstage.c
- create mode 100644 include/bootstage.h
- diff --git a/README b/README
- index 6f3748d..f9e4e65 100644
- --- a/README
- +++ b/README
- @@ -2026,6 +2026,17 @@ The following options need to be configured:
- example, some LED's) on your board. At the moment,
- the following checkpoints are implemented:
- +- Time boot progress
- + CONFIG_BOOTSTAGE
- +
- + Define this option to enable microsecond boot stage timing
- + on supported platforms. For this to work your platform
- + needs to define a function timer_get_us() which returns the
- + number of microseconds since reset. This would normally
- + be done in your SOC or board timer.c file.
- +
- + You can add calls to bootstage_mark() to set time markers.
- +
- - Standalone program support:
- CONFIG_STANDALONE_LOAD_ADDR
- diff --git a/common/bootstage.c b/common/bootstage.c
- new file mode 100644
- index 0000000..2234c87
- --- /dev/null
- +++ b/common/bootstage.c
- @@ -0,0 +1,39 @@
- +/*
- + * Copyright (c) 2011, Google Inc. All rights reserved.
- + *
- + * SPDX-License-Identifier: GPL-2.0+
- + */
- +
- +
- +/*
- + * This module records the progress of boot and arbitrary commands, and
- + * permits accurate timestamping of each. The records can optionally be
- + * passed to kernel in the ATAGs
- + */
- +
- +#include <common.h>
- +
- +
- +struct bootstage_record {
- + uint32_t time_us;
- + const char *name;
- +};
- +
- +static struct bootstage_record record[BOOTSTAGE_COUNT];
- +
- +uint32_t bootstage_mark(enum bootstage_id id, const char *name)
- +{
- + struct bootstage_record *rec = &record[id];
- +
- + /* Only record the first event for each */
- +%sif (!rec->name) {
- + rec->time_us = (uint32_t)timer_get_us();
- + rec->name = name;
- + }
- + if (!rec->name &&
- + %ssomething_else) {
- + rec->time_us = (uint32_t)timer_get_us();
- + rec->name = name;
- + }
- +%sreturn rec->time_us;
- +}
- --
- 1.7.3.1
- '''
- signoff = 'Signed-off-by: Simon Glass <sjg@chromium.org>\n'
- tab = ' '
- indent = ' '
- if data_type == 'good':
- pass
- elif data_type == 'no-signoff':
- signoff = ''
- elif data_type == 'spaces':
- tab = ' '
- elif data_type == 'indent':
- indent = tab
- else:
- print('not implemented')
- return data % (signoff, tab, indent, tab)
- def SetupData(self, data_type):
- inhandle, inname = tempfile.mkstemp()
- infd = os.fdopen(inhandle, 'w')
- data = self.GetData(data_type)
- infd.write(data)
- infd.close()
- return inname
- def testGood(self):
- """Test checkpatch operation"""
- inf = self.SetupData('good')
- result = checkpatch.CheckPatch(inf)
- self.assertEqual(result.ok, True)
- self.assertEqual(result.problems, [])
- self.assertEqual(result.errors, 0)
- self.assertEqual(result.warnings, 0)
- self.assertEqual(result.checks, 0)
- self.assertEqual(result.lines, 56)
- os.remove(inf)
- def testNoSignoff(self):
- inf = self.SetupData('no-signoff')
- result = checkpatch.CheckPatch(inf)
- self.assertEqual(result.ok, False)
- self.assertEqual(len(result.problems), 1)
- self.assertEqual(result.errors, 1)
- self.assertEqual(result.warnings, 0)
- self.assertEqual(result.checks, 0)
- self.assertEqual(result.lines, 56)
- os.remove(inf)
- def testSpaces(self):
- inf = self.SetupData('spaces')
- result = checkpatch.CheckPatch(inf)
- self.assertEqual(result.ok, False)
- self.assertEqual(len(result.problems), 2)
- self.assertEqual(result.errors, 0)
- self.assertEqual(result.warnings, 2)
- self.assertEqual(result.checks, 0)
- self.assertEqual(result.lines, 56)
- os.remove(inf)
- def testIndent(self):
- inf = self.SetupData('indent')
- result = checkpatch.CheckPatch(inf)
- self.assertEqual(result.ok, False)
- self.assertEqual(len(result.problems), 1)
- self.assertEqual(result.errors, 0)
- self.assertEqual(result.warnings, 0)
- self.assertEqual(result.checks, 1)
- self.assertEqual(result.lines, 56)
- os.remove(inf)
- if __name__ == "__main__":
- unittest.main()
- gitutil.RunTests()
|