[IntelMQ-users] Custom harmonization configuration in tests
Kamil Mankowski
mankowski at cert.at
Wed Feb 28 09:39:36 CET 2024
True, you could also - if you had time - propose a change in the base
BotTestCase class to allow overriding the harmonization loader without
subclassing. It was my plan, but just don't have time for that at the
moment.
Best regards
// Kamil Mańkowski <mankowski at cert.at> - T: +43 676 898 298 7204
// CERT Austria - https://www.cert.at/
// CERT.at GmbH, FB-Nr. 561772k, HG Wien
On 2/28/24 09:31, Vaclav Bruzek wrote:
> Hi,
> thanks for the suggestions. So there are two options
> 1. overwrite the file in intelmq/etc/.
> 2. merge the loaded harmonization in the specific test cases with the
> custom event fields.
>
> This might be a good addition to the documentation.
>
> Sincerely,
> Václav Brůžek
>
>
> On Wed, 28 Feb 2024 at 09:04, Kamil Mankowski <mankowski at cert.at
> <mailto:mankowski at cert.at>> wrote:
>
> Hi,
>
> I overcome such a problem by creating a custom test base, look at those
> snippets as an example:
>
> import intelmq.lib.test as test
>
> ADDITIONAL_HARMONIZATION =
> ["contrib/constituency.harmonization.part.json"]
>
> def load_harmonization():
> harmonization = pkg_resources.resource_filename(
> "intelmq_extensions", "etc/harmonization.conf"
> )
> extensions = []
> for file in ADDITIONAL_HARMONIZATION:
> with open(pathlib.Path(__file__).parent.parent.parent /
> file) as f:
> extensions.append(json.load(f))
> return merge_harmonization(extensions, harmonization)
>
> class TestCaseMixin:
> harmonization = load_harmonization()
>
> class BotTestCase(TestCaseMixin, test.BotTestCase):
> """Provides test class with additional changes required for
> extension bots"""
>
> In my case, I'm merging the default harmonization with additional
> fields, but you can just load your own.
>
> Best regards
>
> // Kamil Mańkowski <mankowski at cert.at <mailto:mankowski at cert.at>> -
> T: +43 676 898 298 7204
> // CERT Austria - https://www.cert.at/ <https://www.cert.at/>
> // CERT.at GmbH, FB-Nr. 561772k, HG Wien
>
> On 2/28/24 08:52, Sebix wrote:
> > Dear Václav,
> >
> > Which harmonization file did you change?
> >
> > The test library loads the harmonization config from the package
> itself:
> >
> >
> https://github.com/certtools/intelmq/blob/ac6aa4e306b1431b6db89158e25ed4c2c5a356bd/intelmq/lib/test.py#L190-L191 <https://github.com/certtools/intelmq/blob/ac6aa4e306b1431b6db89158e25ed4c2c5a356bd/intelmq/lib/test.py#L190-L191>
> >
> > harmonization =
> > utils.load_configuration(pkg_resources.resource_filename('intelmq',
> > 'etc/harmonization.conf'))
> >
> > best regards
> > Sebastian
> >
> > Institute for Common Good Technology
> > gemeinnütziger Kulturverein - nonprofit cultural society
> > https://commongoodtechnology.org/ <https://commongoodtechnology.org/>
> > ZVR 1510673578
> >
> > On 2/28/24 08:39, Vaclav Bruzek wrote:
> >> Dear IntelMQ Developers & Users,
> >> I'm trying to incorporate my custom fields in Events and Reports as
> >> well as test cases for my custom bots in unit tests. What I¨m still
> >> encountering is that the Github actions are failing since my custom
> >> fields in harmonization are not known. I've added step which should
> >> create the harmonization file in /opt/intelmq/etc/ like so which is
> >> the only change to the action:
> >>
> >> - name: Include custom harmonization names
> >> run: mkdir -p /opt/intelmq/etc/ && cp
> >> docker/fast/harmonization.conf /opt/intelmq/etc/
> >>
> >> However, intelmq still falls back to the default one. If I try
> to run
> >>
> manually load_configuration("/opt/intelmq/etc/harmonization.conf") the
> >> correct result is displayed.
> >>
> >> Does anybody know how to supply the custom configuration to unit
> tests?
> >>
> >> Sincerely,
> >> Václav Brůžek
> >>
> >
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://lists.cert.at/pipermail/intelmq-users/attachments/20240228/242f2206/attachment.sig>
More information about the IntelMQ-users
mailing list