University Theses

For over a decade, Red Hat Czech has actively collaborated with students in the Czech Republic on more than 400 theses. If you’re looking for challenging and innovative projects for your thesis, we encourage you to get in touch with us. To gain a better understanding of the range of topics we cover, you have two options to explore:

First, you can check the list of our previous thesis topics bellow. This list showcases the diverse array of projects we have worked on in the past.

Alternatively, you can access the university information system of your university. By using the keyword “red hat” as a filter, you will be able to discover a wide range of our past and current thesis topics directly within the IS.

We also welcome students to share their own ideas and topics for discussion. If you have a unique thesis idea or are interested in specific areas of research, please feel free to reach out to us at research-brno@redhat.com. We are excited to hear from you and look forward to the possibility of collaborating together.

TitleContentCompletedThesis StudentThesis ConsultantThesis Leader
Jenkins Shutdown Queue Plugin

Jenkins, an open-source automation server for continuous integration and delivery, has a shutdown mode, during which preparation waits for all already executed jobs to finish and prevents the new queued ones to build. This thesis aims to implement a Jenkins plugin that allows these stationary jobs to overtake a frozen queue. The resulting working plugin possesses end-user functionality enough to control its main logic. The thesis describes the Jenkins benefits, accounts for its main components, generally explains the Jenkins plugin deployment, and describes the design and implementation for the final Shutdown Queue Plugin.

Jenkins automation server has a queuing mechanism to checkout jobs before execution and shutdown mode when the queue is frozen and the system just waits for all jobs to be finished. When the queue is full of short jobs and the last running job is a very long job, this becomes very inefficient. The student will analyze how Jenkins is estimating the time of individual jobs, how the queue is organized, and how the shutdown mode works.
The result of the thesis will be working Jenkins plugin, ensuring that short jobs can overtake frozen queue during the shutdown time of long-running tasks. The plugin will be deployed on the official website of the Jenkins project.

Autumn 2022Dominik Kozubík Jiří VaněkAdam Rambousek
In-memory compilation of freshly decompiled classes back into a running VM

This thesis is concerned with theoretical aspects of overcoming the limitations of standard instrumentation of processes running under the Java Virtual Machine (JVM). Bytecode instrumentation is the ability to modify the bytecode of a running process without the necessity of restarting it. This feature is subject to limitations imposed by the implementation of JVM under the OpenJDK project. The work then implements a Java compiler wrapper tool which works less traditionally, by using a dynamic classpath. This allows compilation of source code obtained at runtime while also resolving dependencies at runtime using a custom interface. We aim to integrate these features into the Java Runtime Decompiler project. Used together, this makes it possible to decompile the bytecode of running Java processes into source code and then observe, modify, recompile, and overwrite the currently executing bytecode.

Java platform with its classloader hierarchy and security manager provides the perfect environment to run third-party applications in a secure, isolated environment, e.g., javaws or former JBoss. When debugging such runtime, developers are very often forced to run third-party binary blob to reproduce the error. At that moment, decompilers and disassemblers come to play to see what the blob is actually doing. If an issue is found more likely in blob than in the runtime, then it is necessary to prove a fix. That forces developers of runtime to change the blob and use a new version in runtime. In addition, such binary blobs are very often hard to decompile and are very often incomplete. So the work has to move from filesystem into running JVM. This approach, when automated, may open new areas of testing based on automated runtime patching of JVM.

Java offers interesting approaches to obtain bytecode of currently running classes. By using easy tricks, this runtime bytecode can be decompiled (done in previous thesis).

This thesis aims to enable composition of an in-memory dependence tree and compile a freshly decompiled class back to a running JVM (Java Virtual Machine). The freshly decompiled class fragments are very likely not to be able to compile out of the box, and the student will have to elaborate on their structure. This issue may not be solvable on Java language level, and bytecode operations or java-assembly operations may be necessary to be used. Even if the class bytes are adapted and its decompiled source modified and compiled, the replacement of classes in a running JVM has its limitations. The student need to investigate possible solutions and propose the best approach.

Autumn 2022Marián KončekAdam RambousekJiří Vaněk
Next generation of Fedora MediaWriter

The goal of this bachelor thesis is to create new version of tool Fedora Media Writer, used for creating bootable USB with operating system Fedora. Main purpose of this rework is support of native look on operating systems Windows and MacOS. New version of framework Qt is able to do that. The result is new look of aplication with other upgrades. Benefit of this bachelor thesis is actualization open source aplication, about which was community interested in. Final aplication allow to use Fedora Media Writer with native design on different operating systems.

spring 2022Evžen GastaJan GrulichIng. Regéciová Dominika
Test Results Management System Complementing the tmt Tool

This diploma thesis deals with the area of software testing, more precisely with the topic of managing test results. The aim of this work is to find, set up and implement a system that complements the missing functionality of the TMT tool, which is going to replace the Nitrate tool in Red Hat as a test management system. The content of this work is a basic introduction to the tools Nitrate, TMT and other technologies used in Red Hat. Furthermore, the work presents the current state of the test infrastructure and collected user requirements for a new system for managing test results. Subsequently, the ReportPortal tool is introduced as a system for test results management and the missing functionality is defined. The rest of the work is devoted to setting up the system itself and implementing the missing functionality, along with implementing the infrastructure needed to import test results into ReportPortal. The work describes the method of deploying the system in use and feedback from users. The deployed system is evaluated and its further possible improvements are discussed.

spring 2020Dubaj OndrejŠplíchal PetrVojnar Tomáš
Practical Application of Facebook Infer on Systems Code

Static analysis is nowadays often used in the development process to find defects in the produced software. Although static analysis tools can effectively find bugs in software with millions of lines of code, they have also some disadvantages. The main disadvantages are the difficulty to deploy the chosen tool on the given project, high numbers of false reports, and the time and space requirements. This thesis focuses on mitigating these negative features of the Facebook Infer tool mainly for the context of using it to analyse Linux utilities shipped as SRPM packages. To simplify its deployment, an Infer plugin has been created for the csmock tool, which allows static analysers to run automatically on packages for CentOS or Fedora. To reduce the number of false reports, a filter has been created, which filters Infer’s output according to several proposed heuristics based on experience obtained by analysing the reports produced by Infer. The filter has been also included into the csmock plugin and tested on a number of packages. On the analysed packages, the filter was able to remove 60 % of false reports with a loss of 2.5 % of real defects. The time required to run the analysis can be reduced by using incremental analysis. Shortcomings of the incremental analysis provided implicitly by Infer were experimentally found, so this thesis also describes the creation of a wrapper for Infer, which replaces the incremental analysis in Infer.

spring 2020Beránek TomášDudka KamilVojnar Tomáš
Extension of the Eclipse Che Editor for UI Testing Module

The goal of this thesis is to design and implement module for testing graphical user interfaces of integrated development environment Eclipse Che. The biggest priority of this thesis is to make the module compatible with module for testing graphical user interfaces of editor Visual Studio Code. In order to ensure compatibility between both editors, new module was created to define common application programming interface for graphical components. Created solution enables Visual Studio Code extension developers to use existing user interface tests in Eclipse Che IDE with minimal effort. As result source code can be shared which reduces maintenance costs.

spring 2020Lorinc MariánJelínek DominikRogalewicz Adam
Chart Builder Ansible Automation Analytics

This thesis focuses on creating a web component to render charts from a structured data format (schema for short), and creating an user facing interface for editing and creating the schema for the Ansible Automation Analytics. The thesis explores the current implementation of the Ansible Automation Analytics and the corresponding API, researches similar charting libraries and describes the fundamentals of used technologies. The practical part describes the requirements for the component and describes the development and the implementation of the plugin. Furthermore, the thesis describes the process of testing and the future development plans of the plugin.

spring 2020Berky LeventeThomasson BenRogalewicz Adam
Applying Code Change Patterns during Analysis of Program Equivalence

The goal of this thesis is to propose a static analysis method for recognition of code change patterns describing recurrent changes between different versions of low-level code. The thesis proposes an encoding method of patterns, which uses the LLVM intermediate representation, and a pattern matching algorithm based on gradual comparison of instructions according to their control flow. The proposed analysis has been implemented as an extension of DiffKemp, a tool for analysing semantic differences between versions of large C projects. Results of experiments conducted on three pairs of past versions of the Linux kernel show that the extension is able to eliminate a substantial amount of false-positive or generally undesirable differences from the output of DiffKemp, which would otherwise require manual inspection.

spring 2020Šilling PetrMalík ViktorMalík Viktor
Equivalence-Based Slicing of Programs

The aim of this work is to design a method that simplifies two programs based on the results of analysis of their semantic difference. The goal is to remove as many semantically equivalent parts of the programs as possible. To find these equivalent parts, we apply our own solution to the problem of finding the maximum common induced subgraph. Subsequently, we are able to simplify the programs by using backward static slicing. By applying this simplification, we obtain sliced programs that consist of the differing parts and parts that can affect these differences. The method has been implemented as an extension of the DiffKemp tool, which is a static analyser of semantic differences between different versions of large scale programs. Our experiments on the Linux kernel show that the method is able to produce correct slices very efficiently (the analysis is prolonged only by 3.2%). Moreover, the created slices are much smaller than the original programs, which makes them suitable for further analysis.

spring 2020Malecová TatianaMalík ViktorMalík Viktor
Continuous Integration Dashboard

This bachelor thesis deals with the development of a web application for integrating CI/CD instruments. The main goal was to study the currently available technologies and prepare an application corresponding to the provided requirements. During system implementation, were learned development aspects such as CI/CD instruments, server-side frameworks, client-side frameworks, databases, web server technologies, containerization tools. As a result of bachelor’s thesis we prepared an application consisting of three parts: server part, client part and database. This application is prepared to run divided into three parts in containerization.

spring 2020Abramov MikhailJelínek DominikBurget Radek
Digital personal ID

This thesis aims to analyze the current state of electronic identification in the Czech Republic and to outline possible ID cardless solution for electronic identification. The output from the analysis will be taken into account when developing a prototype for mobile personal ID working in the Czech Republic.

spring 2021Šimon PriadkaMartin Večeřa
Analyzing validation errors of TLS certificates in the wild

This thesis analyzes the situation about the outcomes of certificate chain validations happening on the Internet. The analysis is based on chains collected for various well-known network services, and it utilizes multiple cryptography libraries for their validation. The validation results are examined first in terms of their frequencies and subsequently as tuples of results from multiple libraries to compare the libraries’ behavior.

spring 2021Róbert ŠuškaMartin Ukrop
Extending PatrIoT framework with Kubernetes support

Over the last few years, the demand for testing IoT applications has significantly increased. Testing these applications cannot occur directly on IoT devices, and therefore a different approach is needed. The PatrIoT framework offers the necessary features for testing distributed IoT applications, such as network simulation and device emulation. This thesis aims to extend the PatrIoT framework to support testing in the Kubernetes orchestration system. In addition, it will provide support for the automated deployment of the emulated devices. The designed and implemented extension consists of the network simulation library and the Kubernetes operator that provides the simulation. The extension also implements the automated deployment of emulated devices.

spring 2021Jakub SmadišMiroslav JarošAdam Rambousek
Blockchain in the public sector

Blockchain has been receiving a lot of attention for its potential to enable non-third-party involvement between financial transactions, its resistance to hacking, and its transparency characteristic. One of the most obvious and powerful use cases of blockchain is in the cryptocurrency ecosystem, namely Bitcoin and other alternative coins. Following the success of Bitcoin, many blockchain advocates are trying to explore the possible benefit of this technology in other areas as well. While there are many ongoing research directions, in this thesis, we want to explore the topic of blockchain in the public sector thoroughly. The primary goal of this thesis is to look closely at the current position of blockchain in the public sector, the hypothetical use cases, challenges and limitations, and the adoption procedures. We also propose the proof-of-concept of blockchain usage for open dataset integrity. To achieve this, we model the application to collaborate the open data API with the Ethereum blockchain. Three significant findings were discovered from the study. First, it is the preference of permissioned blockchain implemented for public sector applications. Second, we found that, despite the external novel blockchain use cases, there are uncertainties over the technology maturity, regulation, standardization, security, and this technology as a whole when implementing them. Finally, it is the pathway of blockchain adoption in the public sector compared to the private sector. Regarding our proposed proof-of-concept, we found that it is very effective and efficient for record consistency and large record comparison. One limitation is the capability to figure out the modification bits of data in case changes were captured.

spring 2021Kanitha ChimMarek Grác
Web application for manufacturers rating

This thesis aims to implement an open-source, user-friendly web application for manufacturers’ ratings. This application allows groups of volunteers to create, revise and publish manufacturers’ ratings. Application is developed employing modern web technologies like Next.js, React.js, TypeScript, and MongoDB, which ensures good performance, SEO, scalability, and maintainability. In this thesis, user experience research is reviewed, the application is analyzed, the user interface is showcased, the implementation details are described, and instructions on running, deploying, and customizing the application are provided.

spring 2021Peter SlanýMartin Večeřa
Android Application for Charity Donations

This thesis aims to design and implement an Android application that provides an easy way to donate to organizations. The result of the implementation part is a native application written in the Kotlin programming language. The theoretical part of the thesis presents information about the analysis of the requirements, design of the application, used libraries and technologies, and interesting implementation details. To sum up, the thesis represents the survey evaluation in which users reviewed and provided feedback on the application.

spring 2021Ivan KiráľMartin Večeřa
Comparing X.509 certificate validation errors across TLS libraries

IT professionals often meet certificate validation errors when dealing with TLS. In such situations, their decisions may be crucial for the security of systems they implement. However, error messages differ depending on the used TLS library, and official documentation usually does not help much. This thesis performs a comparison of certificate validation errors occurring in five common TLS libraries . To do so, it employs a custom set of erroneous certificates. Furthermore, a simple TLS connection is implemented in the five libraries. As a result, we establish a mapping between the corresponding errors from different libraries. The mapping is published online, together with the erroneous certificates and TLS source code. All three resources aim to be used by developers when they require guidance.

spring 2021Pavol ŽáčikMartin Ukrop
Web-Based Individual Approach Employee Training Tool

The goal of the thesis is to create a web application to help employees starting at a new position acquire the necessary knowledge and resources. The application allows mentors to develop a learning path for newcomers in different job positions. New hires follow the learning path and review their progress. The thesis contains requirements discovery and analysis, an overview of similar solutions, the proposed design of the application, a summary of used technologies, the process of implementation, and application usage demonstrated in two main scenarios.

spring 2021Aneta ČadováJuri SolovjovAdam Rambousek
Unsupervised Time Series Anomaly Detection on Virtualisation host networks

Cloud computing provides unique automation opportunities and a reduction of administrative costs. The special circumstances of such environments, such as live virtual machine migrations, could make network anomaly detection more challenging. The thesis looks at several anomaly detection algorithms and evaluates the advantages of estimating the anomaly rate. The theoretical part describes the methods from a mathematical standpoint. The practical part then explores the validation and training methods for time series learning while also chooses the appropriate parameters. The trained models are evaluated on multiple data sets and compared in regards to their ability to detect anomalies, minimise the number of false alarms and their speed.

spring 2021Andrej ČernekDominik HollerAdam Rambousek
Detection of hardware and software problems using ML

This work aims to improve the testing process of the Cluster Quality Engineering team at Red Hat. Specifically, it targets to detect errors and anomalies in hardware behaviour during tests. Part of this work is already incorporated into the team’s internal tools and is in sharp operation. The rest of the bachelor thesis serves as a prototype to test other functionalities such as machine learning and visualisation.

spring 2021Šimon FoučekJaroslav KortusLukáš Grolig
Web-based user interface to Podman

This thesis deals with developing a web user interface application for Podman for Red Hat. The thesis is divided into two parts. The first part introduces the reader to containerization technologies, client-server model, and REST architecture, while the second part focuses on the application development itself. The result of the thesis is a fully functional web application that allows users to try the Podman container technology with a web user interface instead of a command-line interface.

spring 2021Martin ŠafářBohdan IakymetsMarek Grác
Predicting software stack issues in Tensorflow

Project Thoth is a recommendation engine for Python software stacks. As Python is becoming de-facto language of choice for many data scientists and machine learning engineers, Thoth aggregates information about popular Python machine learning and data science packages. This thesis creates two predictive models capable of using Thoth’s knowledge database to spot patterns causing issues in software stacks and predict which software stacks will likely not work. It includes an overview of Python dependency management environment and an explanation of the dependency resolution problem and its challenges. The results compare the two classification models and present the found patterns for discovering issues.

spring 2021Tomáš JaníčekFridolín PokornýTomáš Brázdil
Open Source Contest web application development

The goal of this work is to design and implement a web application for Red Hat Open Source Contest to simplify the process of working with the tasks. The thesis describes an analysis of the current solution, design and implementation of the new one together with the testing and deployment to the production environment. The application provides a user interface and exposes an application programming interface.

spring 2021Branislav SmolíčekMartin Večeřa
Performance Testing Automation of Apache Qpid Messaging Libraries

Event-driven architecture has proven to be an effective way of designing software systems composed of loosely coupled software components. These designs are often implemented using message-oriented middleware, which puts messaging into a fundamental role and places great demands on reliability and performance of the messaging solution being used. This thesis focuses on messaging libraries developed under the Apache Qpid Proton project, and proposes a method for an automated measurement of their performance in peer-to-peer mode using an open-source tool called Quiver. The proposed performance measurement method has been implemented in the form of a Jenkins pipeline and is suitable for inclusion in a continuous delivery pipeline of a corporate software development process, serving as a performance regression test. …více méně

autumn 2020Jiří DaněkZdeněk KrausMartin Večeřa
Connecting emulated virtual networks across multiple physical hosts

The focus of this thesis is on the problems of IoT testing and in particular the PatrIoT framework, which aims to address them. The main goal is to lay the foundation for testing on multiple physical hosts and contributing that to the PatrIoT framework. Before that, we will need to become familiar with the current state of the art, analyse all available solutions and select the best tools to handle this problem.

autumn 2020Petr HálaMiroslav JarošAdam Rambousek
Jenkins queue overrunning

Jenkins has a queuing mechanism to checkout jobs and a mechanism for canceling builds in queue. Sometimes there is a need to move a job in the queue up or down. Jenkins already has many mechanisms for prioritizing jobs, but not individual builds. Also, all currently existing solutions, however flexible and sophisticated, are more heavy-weight than necessary. The student should research and hack how Jenkins queue is working, and enable two simple arrows UP+DOWN (for moving in queue) to currently existing X (remove from queue). The result should be a working Jenkins plugin, ensuring that short jobs can overtake frozen queue during the shutdown time of long-running tasks, and deployed on https://plugins.jenkins.io/. This solution may not end like a usual plugin but may enforce a patch to Jenkins itself. Together with Jenkins Shutdown Queue Plugin it can be a super-powerful combo. Possible as one-man-show or two students’ teamwork.

spring 2019Jaroslav OtradovecJiří VaněkIng. Petr Jedlička, Ph.D.
Efficient implementation of Picnic

The main goal of this thesis is to survey available implementations of the Picnic digital signature scheme and evaluate their usability on a non-standard platform. Picnic is NIST’s second round candidate for standardization of quantum-resistant cryptography. The resulting version uses the official implementations to run in WebAssembly. We also provide performance benchmarks with focus on timings and briefly compare them to the standard implementation. Benchmarks were primarily conducted in 3 browser: Firefox, Edge, and Chrome. Although all browsers showed a similar performance, the standard implementation running in a native environment is still superior. We present an extensive description of signing and verification for each parameter set, as well as introducing basic building blocks and cryptographic primitives used in the Picnic signature scheme.

spring 2020Jiří RöschDaiki UenoMarek Sýs
Impact of virtualization on benchmark accuracy

The goal of this thesis was to measure and analyze the impact of virtualization on the stability of benchmark results. The beginning of the thesis is focused on the description of benchmarking, used tools, software and hardware, followed by a short description of virtualization and its types. The end of the thesis is dedicated to the description of the benchmarking process and the analysis of the results.

spring 2020Jakub FaboJiří VaněkAdam Rambousek
Usability analysis of TLS API documentation

This thesis deals with the usability of selected TLS libraries, their documentation, code samples and related resources. We describe the design and results of our initial exploratory study and a follow-up study, both performed with students of the Faculty of Informatics. The results show that the selected libraries’ documentation suffers from many usability problems. Although these issues are not specific to TLS libraries, their consequences might be more serious. Quantitative rating of the severity of selected problems suggests that the libraries are comparable.

spring 2020Matěj GrabovskýLydia KrausMartin Ukrop
Quantitative analysis of TLS certificate validity on the Internet

The aim of this work is to design and create a tool to collect a large number of used digital certificates from the Internet, while also providing an interface for their management and enabling their quantitative analysis for Internet security research. The thesis first analyzes the requirements and existing projects with a similar goal and then designs its own solution. The output is a modular tool called Cevast, which allows you to collect real digital certificates from the Internet, manage them on a local storage and analyze them using a wide range of functions, in the context of this thesis especially validation using existing implementations of SSL/TLS protocols. Part of the thesis is also a presentation of the functionality of the tool by performing an analysis on a sample of certificates and its evaluation.

spring 2020Radim PodolaMartin Ukrop
Corner cases and possible improvements of automated testing

The aim of this thesis is analysis of current state of OpenJDK QE in Red Hat team, identification of the biggest issues in their test automation process and their resolution. A part of this thesis is also dedicated to improvement of automates results processing and reporting. Most of the problematic corner cases mentioned in this thesis are not product specific, making the solutions applicable for other teams.

spring 2020Petra MikováJiří VaněkAdam Rambousek
Application-specific passwords / Multiple passwords for one user in FreeIPA

This thesis implements basic support for application-specific passwords in FreeIPA, which will not be usable for account management to improve security. On top of that, it proposes a scheme to implement support for more advanced access control for application-specific passwords that would enable to allow access only to a specified set of systems and services for each application-specific password. The thesis also summarizes and explains the reasons for design and implementation decisions, as well as other notable alternatives that were considered. Last but not least, it provides relevant information about key used concepts, software, and technologies.

spring 2020Richard KalinecStanislav LázničkaVáclav Matyáš
Event-Driven Automation

The thesis deals with automation of processes in Testing Farm Team of company Red Hat Czech s.r.o. Automating the chosen task “Update and test continuous integration system with new operating system build results in simplified maintenance of said continuous integration system. Implementation uses a Jenkins server to execute jobs and tft-admin tool to perform smaller steps resulting in automation of the task. Also, in the implementation part, modifications of the tft-admin tool allow usage in automated scripts which simplifies future automation of other processes.

spring 2019Havlín JanVadkerti MiroslavLengál Ondřej
Web Application for Certificate Management

The aim of this work is to create software to request and manage X.509 certificates. Its main emphasis is to provide a smart and intuitive user interface, which would enable administrators, who do not have much knowledge about certificate, to request and manage them. The work is implemented using React as a plugin for Cockpit, which by extension will fit it into a bigger picture of Red Hat’s portfolio.

spring 2019Kobyda SimonMarušák MatejBurget Radek
Automated Generation of Tests for GNOME GUI Applications Using AT-SPI Metadata

The goal of this work is the development of a tool capable of automatic test generation for GUI applications in the GNOME desktop environment. The tests are generated using metadata provided by the assistive technologies, specifically the AT-SPI. The proposed test generator utilizes the given metadata to create a model of a tested application. The model maps the event sequences that are applied on the tested application during the test generation process. The generation process involves the detection of severe bugs in the tested application. The results of the test generation process are automated test cases suitable for regression testing. The functionality of the implemented test generator was successfully verified by testing 5 open-source applications. The testing of applications performed by the proposed tool has proven the ability to reveal new bugs.

spring 2019Krajňák MartinPelka TomášVojnar Tomáš
Detection of Timing Side-Channels in TLS

The TLS protocol is complex and widely used, which necessitates thorough testing, as there are many devices relying on it for secure communication. This thesis focuses on timing side-channel vulnerabilities, which seem to come back every few years in different variations of the same attacks. It aims to help correctly fix those vulnerabilities and prevent the creation of new ones by providing an automated side-channel testing framework that is integrated into the tlsfuzzer tool, and by expanding its test suite with test scripts for known attacks that exploit timing side-channels. The extension utilizes tcpdump for collecting the timing information and statistical tests and supporting plots to make a decision. The extension and the new test scripts were evaluated and shown to be accurate at spotting side-channels. Both the extension and the test scripts are now a part of the tlsfuzzer tool.

spring 2019Koscielniak JanKario HubertVojnar Tomáš
Multi-Factor Authentication in Web Applications Using PAM

The aim of this thesis is to implement multi-factor authentication using PAM for web applications. The thesis describes authentication and its modern trends, the related technologies and their incompatibility, as well as the state of authentication in web applications using PAM before the solution, the solution itself, and its integration to an example application. The thesis also provides relevant examples and guides.

spring 2019Kapišinský MariánJan PazdzioraRychlý Marek
Early Testing in oVirt/RHV Project

The objective of this work is to automate the preparation of a testing environment, which is a part of manual early testing of ovirt-web-ui component in project oVirt/RHV and allow the tester to work efficiently. Agile methods, early testing principles, project oVirt/RHV, and software development tools Jira, Jenkins, and GitHub were studied in this thesis. Automation was implemented in Python programming language and the work was incorporated into an existing automation structure in GitLab, while simultaneously being run by the Jenkins tool. All created components communicating with each software development tool are not only used in the preparation script but also will be utilized to gather data into the database in the future. The finished work was thoroughly tested and helped to free up to 2 hours of tester’s time for other work-related activities.

spring 2019Saranová IvanaLukáš SvatýRogalewicz Adam
Real Time Data Processing with Strimzi Project

Container technologies become broadly used in modern times. In prevailing, applications made on the micro-service architecture are rising. This thesis analyzes the design of an application that will process data in real-time. Further, the application will be built using state-of-the-art technologies used by world companies like Netflix, Uber. They are using the systems for real-time data processing such as Apache Kafka, and in recent times they raised it on a higher level by encapsulating this system in the container environment, which guaranteeing effortless scalability. Additionally, using the latest native Kubernetes technologies for processing dozens of data with Quarkus and Strimzi. The problem, which arises, is that these types of real-time data processing systems encapsulated in the containers are especially challenging to test. The main goal of this thesis is a proof-of-concept application based on Strimzi project and also show the designed long term test of the application also known as Marathon, which is the ideal demonstration of user conditions.

spring 2019Orsák MarošJakub StejskalRogalewicz Adam
Fuzz Testing of REST API

This thesis is dealing with fuzz testing of REST API. After presenting state-of-the-art of fuzzing and assessing the current research regarding REST API fuzz testing, we design and implement our REST API fuzzer. The proposed fuzzer infers dependencies of API calls defined in an OpenAPI specification and makes the fuzzing stateful. One of the features is minimization of the number of successive 404 responses while maintaining exploration of a deeper state space of a tested application. To solve the exploration vs. exploitation problem, we used the ordering of dependencies maximizing the probability of obtaining a needed input values and determining of fuzzability of a required parameters. The implementation is an enhancement of the Schemathesis project that is using the Hypothesis library to randomly generate inputs. Our fuzzer is evaluated against the Red Hat Insights application, finding 32 bugs. Amid them, one bug is reproducible only by a stateful set of steps.

spring 2019Segedy PatrikKouřim MartinMalík Viktor
System for Automatic Filtering of Tests

The goal of this thesis is to create a system that automatically determines a set of tests that must be run when a change is done in the ComplianceAsCode project. The proposed method selects a set of tests based on static analysis of the changed sources, taking into account the internal structure of ComplianceAsCode. The created system is divided into four parts – obtaining changes from the versioning system, static analysis of different types of files, computing the set of files affected by the change, and computing the set of tests that must be run to test the given change. We implemented analysis of several types of files and our system is designed to be easily extended by other analyses for other file types. The created implementation is deployed on the server where it automatically analyzes new contributions to the ComplianceAsCode project. The automatic running informs contributors and developers about changes that it found and recommends which tests should be run for the change. This saves the time spent on verifying the correctness of contributions as well as the time spent on running tests.

spring 2019Lysoněk MilanTýč MatějMalík Viktor
Tool for Effective Management of Web Application Tests

The goal of this thesis is to create a tool that allows testers to see the progress of the test they are currently developing on the fly. Hence, to eliminate an issue of constantly re-running tests which take a long time to execute.The problem was solved by creating a program which modifies the test suite logic by using Java Instrumentation, enabling it to run test steps as the user needs and designing GUI that is able to communicate with previously mentioned modified test suite.As a result the process of creating tests was significantly sped up (testers were able to create a test with an unknown test suite in terms of minutes), all users that participated in testing were fond of this approach and would adapt to this workflow.The primary result is pinpointing that things can be handled more efficiently, with proper tools testers can significantly speed up their workflow and also make the introduction process for newcomers easier.

spring 2019Muzikář MartinTomáš SýkoraBeran Vítězslav
Dynamic Extensible DSL Documentation Tool in Ruby

The aim of this thesis is to design and implement a modification of existing or a completely new documentation tool which provides a way for documentation of dynamic extensible DSLs in Ruby. The solution is based on already existing tool Apipie-rails for RESTful API documentation.

spring 2019Fedorenko OlehNečas IvanKřivka Zbyněk
Analyze and improve image filters in GNOME Photos

This thesis is focused on reverse-engineering the Clarendon filter from popular social network Instagram and implementing it inside the Gnome’s Photos application. At the beginning of the thesis, a detailed reconstruction of the filter is made. After that, a search for the most optimal implementation of the filter follows. The result of the thesis is the implementation of the filter algorithm inside the Gnome’s Photos application.

spring 2020Samuel ZacharaDebarshi RayAdam Rambousek
XDP test suite for Linux kernel

The eXpress Data Path is still a quite young technology, and as such, its testing environment may prove insufficient. Existing test suites may require duplicated code, and yet be too specific to cover multiple use cases. This work introduces test suite, with a test harness providing functionality to solve this problem and several test cases testing the basic capabilities of the eXpress Data Path.

spring 2020Štěpán HoráčekToke Høiland-JørgensenMilan Brož
Systematic collection of TPM 2.0 chips attributes on Linux

This work provides an overview of a Trusted Platform Module (TPM), related vulnerabilities, Linux software and kernel modules. A Linux-based bootable USB image for collecting TPM properties by volunteers is designed. The image is based on an existing command-line utility for TPM benchmarking. A hybrid user interface for the utility was implemented, which can run either in a terminal or in GUI. The anonymised result can be stored on a persistent partition on the flash drive or uploaded to a repository. The solution was verified on devices with TPM 2.0, ranging from embedded systems, laptop and desktop computers to dual-socket workstations and servers.

spring 2020Daniel ZaťovičMilan Brož
Usable documentation for certificate validation errors

This thesis proposes new documentation for three chosen certificate validation errors. The evaluation of the new documentation, as well as comparison with the current documentation, was done via surveys performed on IT professionals during an international open-source conference.

spring 2020Michaela BalážováMartin Ukrop
Performance testing of Virtual Data Optimizer storage layer

The purpose of this thesis is to lay foundation in VDO performance testing. Theoretical overview of VDO and its components is presented with special emphasis on performance related structures. Open source benchmark fs-drift was augmented with many features making it possible to test a block layer, specifically a VDO driver. Automated testing package and data processing tools were implemented to gather and process results from performance testing. Finally, various tests were conducted exploring performance of VDO while offering recommendation for VDO usage and performance testing.

spring 2020Samuel PetrovičSweet Tea DorminyAdam Rambousek
The tool for status reporting of software in development

This thesis focuses on the analysis of requirements and processes of users and teams, design and implementation of a prototype tool for reporting the status reporting of software in development. The prototype was deployed and used by several teams in practice. Based on testing and analysis of the prototype, a final design was created for this tool, for which the first full version was then created outside of this thesis. It is successfully used daily by several teams.

spring 2020Tadeáš PavlíkPetr VoborníkAdam Rambousek
User Experience in Virtual Computer Network Debugging

This document describes the process of creating a user-friendly vizualization of large virtual computer networks. In other words, the main goal was to design a tool capable of rendering graph using output of the plotnetcfg tool. The final program should be able to show network interfaces, devices and data about them described in a JSON file conforming to the format generated by plotnetcfg.

2019Oleksandra KoshchiiJiří Benc
LSP clients generator

The Diploma thesis deals with the Microsoft Language Server Protocol. The theoretical part describes the architecture and protocol properties, the LSP implementation within the Eclipse and VS Code development environments and a procedure for creating a new plug-in in the Eclipse and VS Code. In addition, the theoretical part familiarizes with Apache Camel project and implementation of Camel Language server and Camel Language clients for extended language support. The last mention in the theory is about the Yeoman tool for scaffolding a new projects. The description of the practical part deals with properties and implementation of the created LSP clients generator for Language Server Protocol.

2019Dominik JelínekTomáš Sedmík
Bitlocker Disk Encryption in the Linux Environment

There currently isn’t a technology for full disk encryption that would work seamlessly, without installing additional tools, in both Microsoft Windows and GNU/Linux environments. This thesis focuses on the BitLocker technology which is part of the Microsoft Windows and possibilities to integrate it into a Linux system. The goal is to support BitLocker devices using standard Linux APIs and allow users to use these devices as easily as devices encrypted using native encryption technology LUKS/dm-crypt.

2019Vojtěch TrefnýMilan Brož
Reengineering of Report Editor for ManageIQ project

The aim of thesis was to create components for a form called Report Editor, which is part of the ManageIQ project. In the first phase, it was necessary to analyze the condition of the original form and get all the information. It also included testing of the original solution on the users. Based on the information obtained, a solution was proposed that includes the definition of the persona and especially the design of the interface for the new components. This solution was implemented using React library and other modern technologies. In the final stage, the pull request has been created for the form components, in which the components were tested. At this stage, the new components are ready for further use.

2019Marie DoruškováZita Němečková
Automatic verification of software packages with help of DNS

This master’s thesis deals with the problem of secure software distribution. An enhancement for the current state is proposed with the help of the domain name system which is used as a storage for verification keys. These keys are necessary for integrity verification of packages downloaded using a package manager. Furthermore, an extended version is proposed, which takes into account also repository metadata. Both versions are implemented using the Python programming language and integrated into the dnf package manager. This implementation is then tested in a virtual environment, discussed and evaluated in terms of its performance.

2018Martin SehnoutkaTomáš Hozza
Client side DNSSEC deployment

This thesis deals with a problem of end-user’s access to the DNSSEC validation. It explores the possibilities to implement and configure a locally running resolver to address the security issue. It proposes a solution for Fedora Workstation operating system. The solution is implemented and compared to the current solution.

2018Karel NekužaTomáš Hozza
Analysis of Randomness Levels in the Kernel Entropy Pool After Boot

Purpose of the thesis is to acquire entropy from the Linux random number generator and analyze quality of randomness for obtained entropy. System noise during normal operation passively generates entropy that is collected and exploited by the generator to create random numbers. The creation process treats entropy which leads us towards modifying kernel to allow access to raw entropy. The modification needs to be such as to allow for storage of the entropy in memory for extraction after the boot is finished. We’ve achieved the goal by coping data incoming into internal pool of the LRNG, which is used every time new entropy is being added into the generator. Custom system call was used as means of copying entropy from kernel to user space allowing us to analyze. Analysis was conducted using various methods to determine quality of entropy. It was determined that entropy in kernel after boot is low. Quality random numbers are important for variety of purposes, mainly to generate safe keys for cryptographic use. Majority of the keys are generated during boot, where there is not much system noise therefore it’s crucial to know whether or not enough quality entropy is available to the system.

2018Radovan ŠčasnýTomáš Mráz
MySQL query language parser for capturing data changes

Project Debezium is distributed platform for change data capture in database systems. One of supported databases is MySQL, where Debezium needs meta-data for describing of the database structure. These meta-data are acquired by analysis of DDL statements, which has to be parsed. This thesis deals with the possibilities of generating the syntactic analyzers necessary to modify the in-memory model, which describes the database structure. One part of this thesis is the design and implementation of generated parser, which will replace the existing, hand written, solution in Debezium project.

2018Roman KuchárJiří Pechanec
Efficient and secure document rendering from multiple similar untrusted sources

Previously, only trusted maintainers could modify the content of Nauč se Python!, a project for educational content deployed to the web. The goal of this thesis was to allow for some of the content to be rendered from forks of the base Git repository, but safely and efficiently. That was accomplished by creating a tool which can run Python code in various levels of isolation and cache the results. This tool was then integrated into the Nauč se Python! project, building parts of the website in an isolated environment, either in Docker containers or in virtual machines managed by Vagrant, and sharing appropriate content fragments across repositories.

2018Mikuláš PoulMiro Hrončok
USB Flash Drive Writer

In this thesis, a device called Fedorator, capable of writing the Fedora operating system to USB flash drives, is brought from thought to a prototype. Detailed analysis over the hardware is performed, including an overview of the USB protocol.

2018David LabskýMiro Hrončok
Network Interface Controller Offloading in Linux

Modern network interface controllers allow the host to offload packet processing to hardware in order to improve performance. At the present time, the advanced features are utilized in the Linux kernel by offloading the Traffic Control subsystem. Since this subsystem has been designed for a completely different purpose, its usage for hardware offloading is impractical and unreliable. Furthermore, in its current state the subsystem is not capable of utilizing all hardware features, which are often poorly documented. The presented work adopts a different approach to the problem. Five high-end controllers and their packet-processing pipelines were examined in detail. Accounting for their projected future development, common traits and features were identified. The researched information was used to draft a proposal for a new Linux subsystem, more compatible with hardware offloading than the current solution. The proposed subsystem defines a sufficiently descriptive interface to utilize the majority of hardware-offloaded features while avoiding common problems caused by excessively generalized approach of Traffic Control.

2018Ondřej HlavatýJiří Benc
Temperature Component for Silverspoon.io

Design and implement a component for Apache Camel framework, that could be used to read data from a temperature sensor.

2017Matej PerejdaŠtefan Bunčiak
Develop an IoT Application Runtime

This thesis aims to develop platform agnostic IoT runtime using Bulldog Camel and Docker components. Bulldog and Camel components will help to create platform and langu- age agnostic runtime for single board computer (e.g. Raspberry Pi, CubieBoard, BeagleBone Black). Docker technology will be used for easy deployment. This combination of components aims to reduce complexity and bring portability to IoT world.

2017Adam PaulíkŠtefan Bunčiak
Web application for personal currency exchange

This thesis is devoted to the analysis, design and implementation of the web application and the web API, which allows people to bid or demand to personally exchange a certain amount of money from one currency to another. Based on an analysis of similar web services, application requirements are defined. Based on the analysis and requirements, a user interface has been designed. The thesis is also devoted to application design from the implementation point of view and subsequently implemented in Django framework in the Python programming language. Finally, the application was tested with users.

2017Marek HanáčekMiro Hrončok
iOS application for 3D printer control

Bachelor thesis aims to create an application to control 3D printers. The ap- plication simplifies control of 3D printers from devices running iOS operating system. An important part of the solution is the ability add new printer with a minimum configuration steps. Application is available as open source to allow community to possibly add new functions in the future.

2017Josef DoležalMiro Hrončok
Plane cutting of a triangular mesh

This bachelor’s thesis discusses the design and implementation of a library, which allows to make a plane cut of 3D model. To work with these models, it uses their representation in ADMesh. Additional aim of this thesis is extending the ADMeshGUI program of plane cut feature. It also deals with many problems associated with work with a triangular mesh and algorithms that are related to plane cut. The library and tests are written in C++ programming language.

2017Michael OčenášekMiro Hrončok
Code Generator for RedDeer Test Framework

This bachelor’s thesis describes the design and creation of a new Eclipse plug-in. The theoretical part of the thesis describes the architecture of the Eclipse development environment, discusses Java graphical libraries and explains options for extending the Eclipse development environment through its own new plug-ins. Next part of the thesis describes types of application testing and presents ways of application compiling. Practical part of the thesis explains the development of a plug-in, details of internal logic for code generating and describes the implementation of the designed solution for the code generator for the RedDeer Test Framework.

2017Dominik JelínekAndrej Podhradský
Eclipse plugin for triggering Project Newcastle workflows

The bachelor thesis deals with the design and implementation of Eclipse plugin for triggering builds on a remote PNC server for the company Red Hat. The theoretical part of this thesis describes the current state of the applied technologies and the design of custom solution based on specified requirements. The practical part involes the implementation of the designed solution. The plugin is developed in Java programming language using the building tool Maven.

2016Denis RichtárikŠtefan Bunčiak
Firefox OS application

The aim of the bachelor thesis was to design and implement a functional application for Firefox OS mobile operating system to demonstrate the possibilities of its use. There was a possibility to choose the application by my own choice, so I chose the fitness application, which monitors exercising and allows a new user to work out and build a body according to created training programs. The application is primarily designated for individuals who have no experience with working out, do not know how to start, or who do not know enough full-body workouts. It is also designed for those who prefer working out at home rather than at the gym. It allows one to select the tool for working out, according to which the exercises added to training programs are filtered. We might say that in some situations the application can replace a personal trainer, who gives information about how often, and especially, how to exercise correctly. Information is provided in textual as well as in audiovisual form. The application contains tens of demonstrations of different full body workouts for women and men of different age groups. Since there is a huge amount of data, I used the cloud solution to free up mobile phone´s storage space. By taking this step, I managed to provide the user with much information and successfully achieve intended purpose of this application. As a result, the user, without any previous knowledge about exercising, can regularly and effectively work out with fitness tools and own body.

2016Matúš SalajMartin Stránský
Firefox OS

Nowadays, the everyday work is often done on our smartphones or any othersmart devices which are running on various platforms. Those platforms are mostlyAndroid and iOS, but there is also a platform which is called Firefox OS platform.This diploma thesis is here to show you what can be done for that platform. Thenext part of diploma thesis is to compare it with any other platform on the market,in our case the Android platform, and make a conclusion where the final productare two native applications.

2016Matus ChomaMartin Stránský
Pixwords for Firefox OS

This bachelor thesis acquaints readers with the operating system Firefox OS. The thesis describes a methodology of development of the application for this platform, its characteristics and the technology used. The practical part deals with an analysis, design and creation of the mobile application. This application is inspired by the popular logic game PixWords. In the conclusion, the results of testing are evaluated and the application is compared to the original game PixWords.

2016Radek HiessMartin Stránský
Determine applications affected by upgrade

This thesis deals with the topic of „applications affected by upgrade“, particularlyof their determination and recommending the best way of achieving their restart.In the theoretical part it shows the relevance of the problem and describes possiblealgorithms. This thesis also includes the tool for determining affected applicationson Fedora linux distribution which should be possible to use via an extension ofthe DNF package manager.

2016Jakub KadlčíkMiroslav Suchý
Graphical User Interface for the Admesh application

This bachelor thesis is devoted to designing and implementation of an extension for ADMesh tool in the form of graphical user interface. ADMesh tool allows to manipulate and repair 3D models in the STL format. The graphical user interface uses ADMesh C API and is implemented in C++ with support of the Qt framework and the OpenGL library. The interface allows the user to view the model in 3D viewer, to perform selected actions and to get visual feedback of those.

2016David VyvlečkaMiro Hrončok
Infrastructure for Testing and Deployment in the Field of Containers

Efficiency loss caused by repetitive manual tasks is a common problem throughout the IT sector. Developers often test, build, and deploy their software manually. That is not only time-consuming, but also dull and prone to errors and mistakes. This thesis tries to solve that in the context of one DevOps team, by unifying the development and testing tools, and by applying the principles of continuous integration and continuous deployment in the production environment. It is focused on Python, Jenkins, and container-based software and workflows. The main tools used in the thesis are GitLab CI, OpenShift and Tox. Thanks to work in described in the thesis, the number of projects with CI/CD pipelines increased from 7 to 50 percent, the amount of Python style violations started to decrease, containers have proper metadata, the container build process is automated, time and effort are saved by not doing repetitive tasks, and more.

2018Ormandy AdamOchotnický StanislavTuroňová Lenka
A Static Analysis Tool Detecting Bugs in Signal Handlers

This work is about the plugin csigsafe for the GCC compiler. It uses static code analysis to detect bugs in signal handlers according the POSIX norm. This tool analyzes the source files written in C and C ++. This analyzer is created for the Red Hat, which uses it to test sRPM packages used in their Linux distributions. The tool has been tested on a sample of 37 Open Source projects. Testing has shown the utility of the tool to search for errors associated with violation of rules for proper signal handling.

2018Kozovský DanielDudka KamilPeringer Petr
Performance Testing of Linux Kernel Scheduler

Performance of process scheduler in a kernel of an operating system significantly influences throughput and latency of all applications running above it. Any performance drop can have critical consequences on the applications. With the arrival of every new technology (e.g. symetric multiprocesing) the code of the scheduler evolves and grows. This requires not only functional, but also performance regression testing. This work presents methods of performance testing used in the Red Hat, Inc. company. It describes how one can measure performance of the Linux process scheduler in the Linux kernel, collect statistics about its behavior, store the collected data, and visualize them. The goal of this work is to design and implement a new technique of visualization of long-term measurements and utilization of machine learning for automatic classification of performance degradation between different results.

2018Vozár JiříTišnovský PavelMalík Viktor
Source Code Metrics for Quality in Java

In order to control and improve code quality there needs to be a system in place consistingof quantitative metrics and their analysis. With software quality metrics that best representhow well source code is written, source code can be evaluated. Based on this evaluation,code may meet or not meet the criteria set, which may be used for many purposes.The current research shows program developed based on identified code qualities andrelated metrics, methods used in creating the program, and test results based on opensourceprojects.

2018Sherstobitov VladyslavTišnovský PavelKřivka Zbyněk
Graphical Viewer and Simple Editor of ELF File

The goal of this thesis is to create an application with graphical user interface that provides graphical overview of internal structure for binary files in ELF format while also allowing simple editing. The application handles corrupted files and supports Windows and Linux operating systems. It is implemented in C++ with graphical interface created using Qt library. To picture the internal structure of the given ELF file, a custom diagram was designed and implemented.

2018Omacht MartinHack RobinKřivka Zbyněk
Influence of Code Copying on the Quality of a Software Project

This work delves into the field of code clone detection, focusing on Python programming language. We are interested in finding Stack Overflow snippets in real projects. The main goal of this work is to evaluate the influence of copy-and-paste programming on the overall quality of a software project. The NiCad clone detector is used to detect similar code fragments. Additionally, modification of this tool is presented in order to improve the detection process. Code quality is assessed by the volume of duplicate code and by the number of reported issues. The impact is evaluated on a sample of open-source projects hosted on GitHub. We perform a series of statistical hypothesis tests and conclude that there is a~correlation between source code quality and the presence of Stack Overflow snippet in the code base.

2018Chovanec ZdeněkTišnovský PavelKřivka Zbyněk
Graphical Representation of Company Statistics Dashboard

What is measured can be improved. That’s why Red Hat and the PnT DevOps team are calling for a graphical visualization of metrics and key performance identifiers (KPIs) that will be available to customers, engineers, and stakeholders to review the progress of the PnT DevOps team.

2018Bortlová PavlínaKreslíková Jitka
Git Reporting Tool

This bachelor thesis is about an implementation of the software tool dedicated for creation and visualization of statistical information files work. It also refers about Git version control system. System Git does not have any functions to display graphical statistics (graph or chart), therefore the output of the changes of the files is available in command line only. Such data, especially in a large amount of specific files, are not easy to analyze without using other existing statistic tools. There are couple of tools available which are capable of getting information of changes in Git, classify the statistics and display the results. The main disadvantage of such tools is a very long time needed to obtain the results. These tools support only very brief statistics and the user interface does not provide sufficient comfort either. The tool elaborated in this paper is offering more effective access to the changes information from Git using the saved data database. This database, compare to a single command line, is offering quick access to all information and timeline while there is only one time demanding operation – setting up the database. User-friendly interface is enabling an easy operation of the tool itself using window based interface. As a result there are various statistics (graphs and charts) which are user-editable. On the top of that the tool is equipped with an approximate estimation of the project work trends (mathematical-statistical method of the least squares).

2017Nečas VojtěchTišnovský PavelVojnar Tomáš
Continuous Integration and Automated Code Review in Open Source Projects

Due to an increase of the open source projects popularity a new software methodology has been adapted which is still evolving with the time. This bachelor’s thesis deals with this adapted agile software methodology more precisely with continuous integration and its improvements in a real practical deployment. Furthermore, the thesis also deals with automation of the code review process especially with the static code analysis. This thesis aims to describe and explain how the continuous integration and automated code review affect and enhance the modern open source projects. According to the research, a modern type of code analysis with other enhancements was proposed and integrated.

2017Tóth AdriánDavid HalászTuroňová Lenka
Automatic Seccomp Syscall Policy Generator

This thesis deals with design and implementation of the tool which transforms a system call log into a policy that limits the system call usage in operating system GNU Linux. The motivation raised as a need for automatic creation such policies. In this thesis, we dealt with the intermediate data structure that represents the system call log. We dealt with simplification of the data structure on which were used optimization algorithms. The first implemented algorithm was minimax and the other was clustering algorithm DBSCAN. In the last part of the thesis, the testing methods are described. We tested the particular modules and the whole tool as a unit. During the testing, issuesthat prevent from complex testing, arised.

2017Tamaškovič MarekDaniel KopečekTuroňová Lenka
Modern TreeView Component for the Web

This thesis focuses on creating a web component to display hierarchical structure in a form of tree. The thesis explores the current state of web and web components, researches similar tree view components and describes the fundamentals of used technologies. The practical part describes the requirements for the component and describes the development and implementation of it. Furthermore, the thesis describes the process of testing and benchmarking and their results.

2017Berky LeventeDavid HalászTuroňová Lenka
Extension Shield for Testing of ARM-Based Embedded Systems

The purpose of this Bachelor’s thesis was to design and create an extension shield for testing of the Bulldog library on an ARM-based embedded system. It covers the Bulldog library, describes its supported platforms and their I/O interfaces. The main part of this thesis is focused on design and manufacture of the extension shield. Its purpose is automating the tedious process of testing hardware.

2017Valenta PetrPavel MacíkŠimek Václav
Extending audit2allow to Provide More Restrictive Solutions

The thesis analyzes the role of the audit2allow utility in troubleshooting Security-Enhanced Linux denials and proposes extensions that will provide more restrictive and more secure solutions to the user. Basic concepts of SELinux and SELinux security policy are explained. Situations when audit2allow provides ineffective and insecure solutions are analyzed. Support for generating extended permission access vector rules was implemented. Basic support for checking security labels of files was implemented. Implementation details and testing of both extensions to the audit2allow utility are described.

2017Žárský JanMalík MilošSmrčka Aleš
Automated Security Compliance Scanning of MS Windows Operating System Using OpenSCAP Project

This work deals with security compliance of computer systems, namely operating systems, applications and system services. Concept of security policies, their evaluation and their enforcement is described. Security compliance automation and the SCAP standard are presented. OpenSCAP project, which is used as an SCAP scanner, is described together with its tools and its usage. An idea to add support of Microsoft Windows within OpenSCAP, which was previously unsupported, is presented. The core part of the thesis is to identify necessary changes of OpenSCAP and to design an extension of this project. All these modifications are implemented. The solution is demonstrated on security policies for Windows. The solution is evaluated and further improvements are discussed.

2017Černý JanVrabec PeterSmrčka Aleš
Summary Administration of Virtual Machines in the OVirt Project

This thesis tackles the idea of virtualization and virtual machines. Theoretical part covers basics of virtualization from various aspects. It introduces a concept of virtualization and various architectures used to achieve it. The thesis also examines most popular implementations of mentioned architectures as well as commercially available virtualization solutions using those implementations. The aim of its practical part is to design and implement desktop application for administrator level overview over virtual environment running on oVirt. The main goal is to solve some of its known issues regarding accessibility of its data.

2017Macko SamuelSvatý LukášRogalewicz Adam
Continues Integration Support for Copr Build System

This thesis deals with implementation of continuous integration for build system Copr. The implementation uses framework Citool and its modules, which are already used for continuous integration of build system Koji. The outcome system can run the tests for the new package from the build system Copr and test it on virtual machine. This thesis shows way how to implement continuous integration for build system Copr.

2017Klusoň MartinVadkerti MiroslavRogalewicz Adam
Deep Neural Networks Used for Customer Support Cases Analysis

Artificial intelligence is remarkably popular these days. It can be used to resolve various highly complex tasks in fields such as image processing, sound processing, natural language processing, etc. Red Hat has an extensive database of resolved support cases.Therefore an idea was proposed to use these data for data mining and information retrieval in order to ease a resolution process of the support cases. In this work, various deep neural network models were created for prediction of features which could help during the resolution process. Techniques and models used in this work are described as well as their performance in the specific tasks. Comparison of individual models is outlined as well.

2017Marušic MarekHabrnál MatějPluskal Jan
Extend USBGuard to Support External Authorization Policy Sources

This thesis deals with a security aspect of using external USB devices on Linux.It also describes the USBGuard project and its alternatives as well as advantages and disadvantages of centralized management.The main goal of this thesis is to add ability to manage the USBGuard policy centrally via LDAP.The USBGuard extension includes implementation of LDAP functionality and the new public API that handles various sources of policy.This thesis defines the new USBGuard LDAP schema and its attributes on the LDAP server side.

2017Sroka RadovanKopeček DanielPeringer Petr
Automated Testing of OS Linux Protocol Stack Behaviour During Congestion

This thesis is focused on observing and simulating network congestion in laboratory conditions, and on automated testing of the protocol stack in the Linux operating system during network congestion. We perform a set of experiments to find the impact of network congestion on the protocol stack. The simulation and emulation method of this network using physical device will be described. The outcome of this thesis are various configurations of devices and emulators for network congestion together with measurements and evaluation of results. These configurations will be used for automated testing of the kernel of the Linux operating system to catch development errors, network protocol stack errors and card driver error earlier.

2017Tomašov AdriánOkuliar AdamLichtner Ondrej
Porting Tang to OpenWRT

The main objective of this work was to port and document the process of porting the Tang server and its dependencies to OpenWrt system, which is designed for embedded devices such as WiFi routers.This thesis describes the encryption and its application to secure the computer’s hard drive.It describes the structure of the encrypted disk’s partition according to the LUKS specification on Linux operating systems.The thesis focuses on describing possibilities of automating the disk decryption process using an external server that enters the process as a third party.It describes the principles of Key Escrow and Tang server. Steps required to compile and configure the Tang server are described too.The thesis also includes a documented process of contributing changes and newly created OpenWrt packages to corresponding Open Source projects.

2017Dudlák TiborPazdziora JanLichtner Ondrej
Remote API Web Reference for Java Enterprise Applications

The Master’s thesis focuses on testing REST API interfaces of web applications. The result of the thesis is the Restty application, which allows to test API endpoints of said interfaces, as well as to create extensive test cases from the interface’s endpoints. The theoretical part of the thesis explains the principles of web services, remote interfaces, technologies that are used for development of the application, and the Swagger framework upon which the application is built. Subsequently, the design drafts of the application are presented in detail. The following section covers Restty’s implementation and demonstrates how the Restty can be used for testing the interface of a Red Hat JBoss BPM Suite application. In conclusion, the benefits of the Restty application are evaluated and its possible extensions are proposed.

2017Krpec OndřejIvo BekKočí Radek
Performance Testing and Analysis of Qpid Dispatch Router

Application performance testing has recently become more important during the application development of all kinds. This paper maps the fundamentals of performance testing that are commonly used and it analyzes performance testing of components used in Messaging systems, especially Apache ActiveMQ Artemis and Qpid-Dispatch. However, currently used methods for performance testing of these components are primarily focused only on Apache ActiveMQ Artemis by system Messaging Performance Tool called Maestro. This paper proposes improvements of Messaging Performance Tool to allow proper performance testing of Qpid-Dispatch and its capabilities in automatic testing. The solution is demonstrated on series of experiments with different topologies. The final report evaluates the proposed application, the performance of Qpid-Dispatch component and develops ideas for future works.

2017Stejskal JakubKraus ZdeněkFiedor Tomáš
Referral Program Platform

This thesis describes the design and implementation of a~referral program platform implemented as a~web application. The application allows you to set up programs in which you can send invitations, accept users from the waiting list, or manage the status of users’ invitations. The initial requirements for the platform are specified in the beginning of this thesis. Consequently, the design and the implementation of the application is discussed.

2017Kopec MarošVečeřa MartinBartík Vladimír
Refactoring and Verification of the Code of mkfs xfs

This work describes the processes of refactoring mkfs.xfs program for a purpose of refining its code and cleaning the technical debt accumulated over 20 years of the program’s existence. The mkfs.xfs source code is then a subject to static analysis and the used tools (CppCheck, Coverity, Codacy, GCC, Clang) are compared in terms of the number and type of the found defects.

2016Ťulák JanVojnar Tomáš
Automatic Component Metadata Extractor and Consolidator for Continuous Integration

This Master Thesis focuses on the modification of continuous integration practice withinthe Platform team at Red Hat. The result of this thesis is the Metamorph, tool which willmake it possible to unify the continuous integration tools of sub teams under the Platformteam. The theoretical part describes the creation of a continuous integration practice andexplains its benefits. Subsequently, existing CI tools (in the industry) are presented indetail. The following section demonstrates how continuous integration uses the Jenkinstool. This master thesis also contains the particulars of existing internal CI solutions atRed Hat. In the practical part, the design and implementation of tool that was made duringthe creation of this master thesis are introduced. In conclusion, the results are tested byone team at Red Hat and a possible extension is outlined.

2016Kulda JiříRajaiyan GowrishankarVojnar Tomáš
Visualising CPU Activity

This thesis is intended to be a complement for learning about the RISC pipeline. Product of this thesis is a web application. After reviewing various tools and libraries suitable for this work, we have chosen two main libraries React and Redux. The created solution allows the instruction flow to be displayed in the RISC pipeline as well as states of the registers and the memory. It makes easy to perform transitions between the various parts of the visualization. This visualization allows a basic understanding of the RISC pipeline principles and also individual assembly instructions.

2016Ďurčo MariánTišnovský PavelVojnar Tomáš
Continuous Integration System for Interoperability of TLS/SSL Libraries

The goal of this thesis is to implement a continuous integration system, which allows periodic and on-demand testing of provided Secure Socket Layer (SSL) / Transport Layer Security (TLS) libraries on supported systems, and to show the functionality and potential of such system by extending the existing interoperability test suite. The main benefit of this thesis is ensuring interoperability between the most popular SSL/TLS libraries during their development, and to discover potential issues in the shortest possible time. Presented results show found issues discovered by combining and using the implementation parts of this thesis on real world scenarios.

2016Šumšal FrantišekŽidek StanislavSmrčka Aleš
USB HID Monitor

The goal of this thesis is to design and implement application for in-depth analysis of USB HID devices’ structure and communication. The resulting application is capable of visualization various information retrieved from device. It can handle bidirectional communication between computer and HID device and it’s available for operating systems Windows and GNU/Linux under libre software license. Application with this set of features currently does not exist. Thus, its creation is really beneficial for all USB HID developers.

2016Budai OndřejŠkarvada JaroslavRůžička Richard
Web-Based Crash Data Querying Tool

Hundred of thousands crash reports are collected from Fedora and CentOS users every day by Automatic Bug Reporting Tool. Processed data are sent to Fedora Analysis Framework server and used by developers and operating system component maintainers to find common problems. Fedora Analysis Framework provides statistic data and a basic way to filter them. The aim of this thesis is to design and implement tool to sort, filter and join the reports, which will help developers to prioritize their work. The design of this toolset is based on existing solutions, issues reported in Fedora Analysis Framework project repository and information provided by its users.

2016Cyprian MichalFilák JakubRogalewicz Adam
Unified Reporting for Performance Testing

Modern advances in software technologies for today’s application development have allowed for developers to concentrate less on issues, such as performance and resource management, and instead spend more time on developing the application functionality such that the time to market is reduced. Consequently, performance analysis and optimization become more difficult and create a need for advanced performance tools that should provide a clear report of the application in terms of its performance and allow a fast interpretation of these results. This work investigates typical performance problems of today’s applications and offers approaches on how to automatically detect them. Using statistical methods like regression and correlation analysis, investigation of measured values is performed in order to detect performance deviations that possibly occurred in an application under test. The proposed approach has been implemented as a new Reporter component into an open source performance testing tool PerfCake, developed by QE engineers from Red Hat Czech s.r.o. The developed component is capable of detecting and reporting possible issues and their probability. A unified report from all pre-specified measurements is created in such a way that all detected performance issues are immediately visible. The aim is to improve an end-user experience and usability when reading the report from performance testing.

2016Kůrová MartinaVečeřa MartinPluháčková Hana
Performance Optimization of Testing Automation Framework Based on Beakerlib

The aim of this thesis it to analyze and optimize performance of BeakerLib testing library,specifically its logging mechanism, which was reported to perform poorly. First part of thethesis focuses on analysis of given problem, second one describes proposed solutions andits implementation. In the final part performance testing is carried out to verify success ofimplemented solutions. This thesis was written in collaboration with company Red Hat.

2016Heger JakubKutálek DavidPluháčková Hana
Cluster Data Visualization for InfiSpector

This bachelor’s thesis is focused on InfiSpector data visualization by adding a new graph used as a time selector and by modifying open source diagrams that are designed to fit InfiSpector needs. Theory about general data visualization, description of the InfiSpector tool and libraries used mainly for data visualization are described in the beginning. Next, our customized solution and already existing solutions are also described. Finally, last part evaluate accomplished results and propose possible improvements.

2016Hais VratislavSýkora TomášPluháčková Hana
Remote Deployment of InfiSpector

The InfiSpector is an application that provides graphical representation of JGroups communication happening between nodes in an Infinispan cluster. We want to separate InfiSpector application from its infrastructure and let users spend time by focusing on using InfiSpector, making conclusions from data provided by InfiSpector, not setting up its working infrastructure. In order to make use and access to InfiSpector easier and quicker, we want to deploy InfiSpector to a cloud service. Cloud service is Internet-based computing that allows users to share computing resources (e.g. servers, storage, applications and services) and data through the Internet. Cloud is also easy to access. As a cloud service was chosen Openshift. Openshift has many tools for easy development, quick deployment, and many tools for running an application. It also allows to have a free user account for everybody.newline There is also description of how to configure back-end of the InfiSpector in this thesis. Next step is Openshift description, including its overview and configuration files necessary for InfiSpector deployment, development, and running.

2016Číž MarekLengál Ondřej
Graphical Viewer and Simple Editor of ELF File

This thesis specify, design and develop graphial viewer and editor of ELF binary files. The goal of this thesis is to provide easier manipulation with ELF files, although they were corrupted by wrong editing. The final software must be multiplatform, so Qt library is used for the implementation of its graphical user interface. For manipulation with ELF files is uses elf.h library. The application is implemented in C++. The realized tool can be used on both Linux operation system and Microsoft Windows.

2016Veškrna TomášHack RobinKřivka Zbyněk
JUnit Status View for Tested Eclipse Instance

The aim of this paper is to design and implement tools which allow to display testing progress of an Eclipse integrated development environment instance. This resolves problem of viewing currently running graphical user interface test run results. This thesis also contains description of Eclipse IDE ( Integrated Development Environment ) and JUnit framework architecture, that is used to achieve this goal. Implemented applications allow to take a closer look at currently running tests, in a similar way to JUnit view. To achieve visibility, the information window is displayed always on top and doesn’t require the focus. That is useful to locate an error both when creating a new test or analysing already implemented one.

2016Coufal MartinSrna PavolKřivka Zbyněk
JamVM Virtual Machine on the ARM Architecture

This thesis describes and compares two Java virtual machines on the ARM architecture, namely JamVM and HotSpot on Raspberry Pi. First part of this thesis describes Java and virtual machine principle. Next part focuses on both virtual machines, describes their features and methods of interpretation. Last part describes web application, which was used to compare both virtual machines, and evaluation of results.

2016Pobořil FilipTišnovský PavelKočí Radek
A Comparison of CACAO Virtual Machine and HotSpot JVM

The aim of this thesis is introduction of Java platform and two chosen representants of Java Virtual Machine (JVM) implementations. At first JVM HotSpot as widespread one and on the other side JVM CACAO as an alternative option. This thesis describes implementation of chosen areas of both machines. It provides useful information for everybody who deals with runtime program optimalization. Final part presents benchmark results of the match between abovementioned machines by memory and time complexity.

2016Malík NikolajTišnovský PavelKočí Radek
IoT Application Deployment Platform

The aim of this work is simplifying deployment of Internet of Things in households or smaller companies and also reducing the need of maintenance of created network. Main goal of this web application is creating platform capable of deploying applications across ARM single-board computers. Moreover, application provides intuitive preview of all registered devices including its state, shows all the necessary data and informs user about failures on devices.

2016Hrvol MarekJaroš Miroslav, Bunčiak ŠtefanKočí Radek
Existing Attacks on SSL/TLS Protocol

SSL/TLS is a modern cryptographic protocol, which secures the communication between client and server. However, there are attacks on this protocol which can compromise communication either by eavesdropping or disruption. Defending against such attacks and testing the bulletproofness of protocols is a challenging process. This work describes attacks on SSL/TLS and implements selected attacks within tlsfuzzer — a sophisticated solution for testing SSL/TLS implementations. The resulting implementation of attacks is demonstrated on three SSL/TLS implementations.

2016Lysoněk MilanŽidek StanislavFiedor Tomáš
Testing Open vSwitch and DPDK

The project is about the virtual switch called Open vSwitch and its architecture. It deals with an acceleration of the switch mainly by using Data Plane Development Kit (DPDK). Furthermore, it describes the architecture of the DPDK kit and analyses the individual functional units. Furthermore, it describes the architecture of the DPDK kit, analyses the individual functional units and describes the possibilities of its configuration. Another part of the project describes the methodology chosen for a performance testing of virtual switches. Subsequently, this methodology was used to make a design and environment implementation for fully automatic Open vSwitch s DPDK performance testing with the use of automatic systems such as Koji, Jenkins, Beaker a VSperf. Simultaneously, the tools for automatic comparison of produced results were implemented. The created environment was then used for the performance measurement of several basic Open vSwitch configurations with and without the use of DPDK. The implemented measurements are discussed and evaluated in the project. The final project’s stage provides a great amount of the enlargement and improvement of the implemented tests.

2016Šabart OttoOkuliar AdamČejka Rudolf
IRC Logbot

For web application development it is currently possible to use the full range of web technologies. Older technologies have been replaced by new ones and we need to keep up with the current trend in application development for safety, reliability and low resource consumption. The aim of this work is to create a functional IRC logging boot application that supports multichannel recording, rotate records and search them with keywords and design a suitable user interface. The technologies used should be the Scala programming language, the React JavaScript library, the Docker container tool and the OpenShift platform. Describe the use of technologies to make it easy to create other applications on a similar principle using modern web technologies.

2016Průša VojtěchKremser JiříBurget Radek
Polymer Elements for a Business Process Management System

Goal of this thesis is to introduce and analyze Web Components technology and JBoss BPM Suite. Web Components technology gives ability to build lightweight HTML components with predefinedfunctionality. Implementation of this work shows how this approach is applied for creating set of web components, which contains all required custom elements for jBPM user console.

2016Pahuta SerhiiBek IvoBurget Radek
Generic Configuration Interface for Virtual Machines

The aim of this work is to document the development process of configuration dialogs for oVirt entities. Main focus is placed on virtual machine dialog as it has plenty of dependencies related to each other. The work also describes communication with oVirt engine through REST API and experimentally ManageIQ REST API. Dialogs are created using modern Javascript frameworks React, Redux and Redux-Saga to secure proper content and state management in every possible situation. The development work done by this thesis should improve the code base, user-experience and speed up execution of basic tasks.

2016Krajňák MartinJelínek TomášBartík Vladimír
IoT Devices Registry Portal

The purpose of this thesis is to design and implement a web application which allows users to manage their Internet of Things (IoT) devices. The thesis explains the current development status of IoT, its advantages and disadvantages. The thesis focuses on modern technologies from web design, user interfaces, databases and server-side applications and then explains which technologies are suitable for implementation of such an application. In conclusion, the implementation of the portal is described.

2016Kopec MartinVečeřa MartinBartík Vladimír
Performance testing of Messaging Protocols

One of the biggest priorities of modern software development is performance testing of the finished product. The common goal of the performance testing is to ensure that the application runs fast enough to keep the attention of users, even with the unexpected amount of clients using the application at the same time. Without this type of testing, we can miss significant bugs that can be very frustrating for an end-user and can lead to possible loss of customers and also huge money investment in case of fixing the bugs. This thesis focuses on the performance testing of messaging clients with protocol AMQP (Advanced Message Queuing Protocol) and a minimum of two different API (Application Programming Interface)against the broker. The performance testing tools that are used in this thesis are calledMaestro and Quiver. Maestro does not support client testing. Quiver, on the other hand, fully supports it. Because of that Maestro has QuiverAgent, which is used to run Quiver within Maestro environment so we can test clients using Maestro. What is missing is a converter for results from Quiver. Maestro does not understand the representation of quiver output. The first chapter of this thesis describes the fundamentals of testing with a focus on performance testing. The rest of the thesis is about the performance tools mentioned above, the implementation of the converter and its significant help with better automation of performance testing of messaging clients and testing of the clients with the newly implemented converter. The results from the testing are successfully collected and appropriately evaluated with possible suggestions for improvements, which can help refine the performance of the messaging clients.

fall 2019Dominik StuchlíkZdeněk KrausAdam Rambousek
Clusterable Task Scheduler

The purpose of this thesis is to create a microservice that would schedule tasks happening on other devices. The tasks can have different tasks declared as dependencies, and the microservice must execute them in the correct order. Additionally, the microservice must be able to be deployed in a clustered environment, which means ensuring data consistency and preventing duplicate execution of a task. The chosen platform for the microservice is Java.

fall 2019Ján MichalovMatej LazarAdam Rambousek
Integration of RHAMT and Jenkins products

The main goal of this thesis is to implement a plugin for Jenkins CI that integrates Red Hat Application Migration Toolkit. The work is split into two parts. The text part describes both technologies and the progress of development. It also contains a guide for the plugin and example use case. The practical part shows my implementation of the plugin.

fall 2019Jan KaszturaMarek Grác
Argon2 function and hardware platform optimizations for OpenSSL

Memory-hard password hashing function Argon2 has been adopted by applications and libraries alike, but it was as yet missing in OpenSSL library. Some of Argon2 users use OpenSSL. To remedy the need for an extra dependency or the need to maintain separate implementation maintenance, Argon2 is introduced into OpenSSL. As it is designed to be executed in parallel, threading support is also proposed for OpenSSL. Parts of Argon2 code are then optimized further for ARMv8.0-A architecture, in particular for the 64-bit Aarch64 execution state. This includes optimization of memory copying, preloading and optimization of the internal compression function. Performance oriented optimizations are then benchmarked on 5 different ARMv8.0-A machines, ranging from development boards to servers

fall 2019Čestmír KalinaMilan Brož
Compiling Applications for Analysis with DIVINE

Verification and other formal analysis techniques are often demanding tasks, both in skill and time. This is why non-critical software is seldom subjected to the same rigorous analysis as safety-critical software. However, all software would benefit from an extra level of assurance of its reliability and there has been prolonged effort on the side of analysis tools developers to make their use easier . Ideally, the aim is to integrate analysis techniques into the normal software development process. Among other tools, DIVINE is one such verifier whose long-term key goal is to bring verification closer to the developers of everyday software. A big step forward was direct verification of C and C++ programs. The programs are compiled into a more analysis-friendly form to be verified, notably LLVM bitcode (LLVM IR). Another big step in lowering barriers for adopting formal verification is re-using automated build tools and existing build instructions of projects, which would prevent the need for manual compilation of software. The purpose of this thesis is to replace the existing compilation toolchain of DIVINE with a tool which could be transparently used in automated build systems and which would produce bitcode of the whole program. We have successfully implemented such a tool, and evaluated its practicality on a number of real projects which use automated build systems. The resulting bitcode can be loaded into DIVINE and verified.

fall 2019Zuzana BaranováPetr RočkaiPetr Švenda
Integration of MicroProfile LRA with the Axon framework

Computer transactions provide a set of guarantees to help us ensure the reliability of our application. With the rising popularity of microservices architecture patterns, we are facing new challenges. One of them is ensuring transaction guarantees in distributed environments which represent a typical environment for the microservices architecture and where the focus is put on the high-availability and resiliency of services. One way to achieve high-availability of services in such an environment is using the saga pattern for transaction management. The MicroProfile LRA (Long Running Actions) is a proposal API specification of a transaction model, based on the saga pattern, to provide a consistent outcome of transactions without locking resources. In this thesis, we investigate how the MicroProfile LRA specification is suitable for architecture based on the event sourcing and the CQRS principles and propose a proof-of-concept solution on adapting the specification for Axon framework, which works on top of that architecture.

fall 2019Matej KrálikOndřej ChaloupkaBruno Rossi
Web-based customers cases aggregation and reporting tool

The thesis aims to implement a new web-based application that scans cases reported by Red Hat customers for particular products and sends reports to subscribed users regularly. The application should replace the current notification tool which is in use. Implemented application uses new and widely used technologies. Google spreadsheet is used as database for storing user’s subscriptions. Technology Keycloak is used for securing the application and limiting the access to employees of Red Hat only. Also, the application is deployable to Openshift platform.

fall 2019Mário MajernikViliam KasalaAdam Rambousek
High-availability for PostgreSQL in OpenShift

Running containerized applications in Kubernetes and OpenShift is a well-established way of deployment and management of software in companies, which have already adopted Could Native approach to the software life cycle. Relatively mature tools, workflows and well-known best practices are available for stateless services, such as web applications and proxies managed by automated container management platform. It is not very common to deploy stateful systems as databases into the same environment. This thesis focuses on the problematic of integrating stateful, highly available database cluster into OpenShift. Existing tools are surveyed, analyzed for their deployment in automated cloud environments and benefits as well as threats. The solution consists of container images containing selected PostgreSQL tools for high-availability and operator managing these containers in the OpenShift environment. The operator can initialize the cluster, detect crashes and autonomously perform failover.

fall 2019Michal CyprianJan HorákVlastislav Dohnal
Performance testing system for Aggregated Logging in Openshift

This thesis aims to analyze the existing performance testing system of the Origin Aggregate Logging module deployed as part of Openshift. The analysis describes its elements, their limits, but also the environment in which the benchmarks are executed. Furthermore, an improved solution, based on the requirements of the Logging stack development team, is proposed. Finally, the system is implemented as a script that configures the Openshift environment and creates objects, such as pods, imagestreams, or configmaps that were developed as part of the thesis. Additionally, the thesis describes the results of the tests that were executed in order to validate the functionality of the implementation.

spring 2019Vladimír MasarikLukáš VlčekAdam Rambousek
Improve User Experience of a Gantt component in an information system

This thesis aims to extend the functionality of the current Frappe Gantt library in order to improve its user-friendliness. The library allows users to display and modify Gantt charts. The first chapter briefly describes the Gantt chart itself and where it can be used. The following chapters compare alternatives and analyze the current version of the Frappe Gantt library. Furthermore, changes are proposed based on their differences. Rest of the thesis describes the implementation of those changes. The thesis also includes user feedback on the implemented changes.

spring 2019Lukáš VolfMartin Večeřa
Multimedia channel aggregation platform

The aim of this thesis was to create a multimedia channel aggregation platform with web administration user interface and an exemplary mobile app for clients. Multimedia services can be added to this platform in form of plugins. There are two plugins implemented. Web administration UI is provided to ease the use of this platform. The mobile app is using data from the aggregation platform to create content.

spring 2019Jan ŠafaříkMartin Večeřa
Research of Fedora Status for Machine Learning

The topic of this thesis was to find out whether the Fedora distribution attracts machine learning developers and also to create a guideline content for newcomers in this new, progressively developed field. In addition, part of the thesis research was also focused on solving the SRPM packaging dependency issue by using recommendation system based on machine learning algorithm. The model has two different variations, one is using the association rule learning algorithms Apriori and FP-Growth, and the other is based on neural network embedding layers approach, which is actually a Word2Vec model implementation from library Gensim. Targeted programming language was Python.

spring 2019Dominik TuchyňaJan HorákAdam Rambousek
Integration of maps in zoo application

The objective of this work is to extend mobile application Zoo Brno, which serves as a digital companion in Zoo Brno. Extension includes integration of maps and navigation. Work provides summary of map integration possibilities into mobile applications created by React-Native. Subsequently it describes the implementation process and explains application of each component in order to provide the result functionality.

spring 2019Richard KyčerkaMarek Grác
Robomise in a mobile environment

The main goal of this bachelor thesis is analysis, user testing of an existing web application – “Robomise”, and development of a new version for the Google Android platform. This version is optimized for touchscreen devices and brings several minor improvements to the user interface based on the results of the previous user testing.

spring 2019Miriama ZemaníkováMarek Grác
Model Checking with System Call Traces

When executing programs, DIVINE can record system call invoked by the tested program in the form of a trace. This trace can be subsequently used during model checking to replay these system calls back to the program. However, only executions that exactly correspond to the system call trace can be explored by DIVINE. In this thesis, I introduce improvements to the coverage of a program verified by DIVINE with the usage of the recorded system call traces. The first improvement is based on defining and implementing weaker condition which allows a commutation of system calls in the captured trace. This improves the original linear order of the trace to a partial order. The second improvement is based on the introduction of non-deterministic mutations into the traces which can deviate program to different paths of execution, which are possibly filled with errors. Additionally, I also discuss various techniques for modifying traces to achieve the best possible result.

spring 2019Katarína KejstováPetr Ročkai
Decompiling Binaries into LLVM IR Using McSema and Dyninst

There are many tools that operate on LLVM bitcode. To use these tools, LLVM bitcode or original source code are required (LLVM bitcode can be obtained from the source code by a compiler). Sometimes however, only already compiled binaries are available – there is no standard and well-defined process to obtain LLVM bitcode from a binary. McSema is a tool that translates binaries into LLVM bitcode; it makes the tools applicable on previously unavailable targets. McSema itself is open-source, although it relies on proprietary third-party libraries to provide disassembly capabilities. This is problematic, as it prevents many users from using the software. This thesis provides alternative implementation to the proprietary component of McSema which uses open-source Dyninst disassembler. With this new implementation McSema can be used without proprietary software. The performance of the open source version is demonstrated on a set of programs and the results are compared with already existing components.

spring 2019Lukáš KorenčikPetr Ročkai
GraphQL as modern access to jBPM process engine

This thesis explains the concepts of GraphQL and open-source process engine – jBPM. An overview of GraphQL and jBPM process engine is given and the most suitable solution for integration of GraphQL with jBPM process engine is proposed and implemented. The whole development process of this solution is described and the final solution is compared with existing REST API of process engine.

spring 2019Dominik HanákMartin Večeřa
Argon2 security margin for disk encryption passwords

Passwords are a popular authentication method in the field of information technology. Passwords were created for humans to be remembered. Sometimes they are not ideal for usage in encryption software. Therefore, there exist key derivation functions, which transform a password into more suitable cryptographic key. This thesis deals with such functions, in particular considering their usage in disk encryption . The most popular function PBKDF2 is described together with its vulnerabilities and attacks. Memory-hard functions have started being used as a mitigation of time-memory trade-off attacks. One of such functions is Argon2 selected as a winner of Password Hashing Competition. The thesis describes Argon2 in detail. The practical part of the thesis deals with simulating of an attack on a disk encrypted with LUKS2 encryption scheme using Argon2 as PBKDF. It includes collecting Argon2 parameters benchmarked by Cryptsetup software. Attack is devised through CPUs and GPUs using high-performance hardware provided by MetaCentrum VO. The last part of the thesis introduces a price model for an attacker using either physical hardware or on-demand allocation of computing resources in the cloud. This model is then applied to real world prices and data obtained during the attack simulation. The thesis shows that it can take thousands of machines and hundreds of millions of dollars to crack a LUKS2 password eight characters long in ten years.

spring 2019Vojtěch PolášekMilan Brož
Modern development workflow for Fedora GNU/Linux distribution

In this thesis, we will look at the current state of the software packaging in the current GNU/Linux distributions. Using three representatives (Debian, Arch Linux and Fedora), we will see various parts of the workflow and compare the different approaches to the same problems. The goal of the thesis is to propose a modern development workflow for Fedora GNU/Linux distribution. We will describe related tools and partial solutions, that exist for this distribution. Finally, we will discuss the proposed solution and examples of the real setup of the prototype.

spring 2019František LachmanTomáš TomečekMilan Brož
Design UI for Zoo Mobile App

This work deals with the design of a new user interface for an existing mobile application. Another part of the work are the usability tests for the interface created. The theoretical part describes user experience, usability and usability testing – its preparation, progress and evaluation. The work describes the present application, the process of designing a new interface and all information on which it was based, individual screens of the resulting interactive prototype and testing that was done along with evaluation of the data collected.

spring 2019Tomáš StolárikMarek Grác
iOS mobile media platform

The aim of this thesis is to design and implement open-source iOS application, which acts as a mobile media platform. It loads data from a server implemented with Firebase. The application is built in Swift and contains a Realm database. It can be modified by a configuration file and users are able to sign in by Facebook or Google account.

fall 2018Tomáš PecuchMartin Večeřa
Software support for financial rewards

Diploma thesis explores relationship between financial bonus and employee work ethics. The first part is about known motivational theories, employee fluctuation and shows how can manager influence work ethics of his employees. The second part contains analysis of questionnaire and personal interviews focused on influence of financial bonus on overall employee satisfaction and work ethics. The result of the thesis is a web application for managers which helps them to evaluate employees and later divide financial bonuses among their employees based on work results.

fall 2018Michael ČadaTomáš SýkoraAdam Rambousek
Mobile applications for EvMan

EvMan is an event management software that offers a rich user interface through the web. Users that work with EvMan on mobile devices could have more convenient user experience if the interface were more platform agnostic. This thesis analyzes EvMan and its features, discuss the technologies eligible for the implementation, and eventually designs and creates a mobile application that connects to the existing system.

fall 2018Filip ZacharMarek JelenAdam Rambousek
ManageIQ Expression Editor

The goal of this thesis is to design and implement a new filtering tool for ManageIQ project with emphasis on user experience. The first part of the thesis describes the theoretical background. Continuing with analysis of the current filtering tool and evaluation against theo- retical concepts. In the last chapter is described design, testing, and implementation of the new filtering tool.

fall 2018Robin KnaurMartin Povolný
Integrating Apiman gateway with OpenShift

APIs are the building blocks of today’s web applications. However, developing a production ready API often poses a number of challenges such as client management, billing, metric collection, and many others. Commonly the area dealing with these tasks is referred to as API management. In this thesis, we discuss the various aspects of API management in general and introduce an open source API management tool named Apiman. The main focus of this work is the integration of Apiman into the runtime environment of OpenShift — platform as a service solution based on Kubernetes and Docker. This integration includes Docker image for the Apiman’s gateway as well as OpenShift template enabling the gateway and all related components to be deployed into the runtime. Additionally, in later chapters, a further integration in form of service autodiscovery is proposed and prototype application providing this capability is implemented.

fall 2018Jakub ČecháčekJiří PechanecMarek Grác
Automatic optimization of virtual machines for high performance workloads

The goal of this thesis is to research how the performance of different types of workloads can be influenced by different QEMU configurations and, based on the results of this research, provide a UI for automatic optimization of virtual machines.

fall 2018Filip KřepinskýTomáš JelínekMarek Grác
Android mobile media platform

The aim of this work is to create native Android application for open-source platform for sharing own content, which can be configured so the application has its unique look. Application cooperates with Firebase Real-time Database and offer authentication via social media accounts like Google or Facebook. Part of this thesis is also overview of current solutions available for users to publish own monetized content and their ability to customize visual experience of the service.

fall 2018Richard HrmoMartin Večeřa
Email interface to an information system

The aim of this thesis is to design and develop an email interface for an information system. The application provides an interface for sending and receiving emails. Additionally, it allows to create mailboxes dynamically and to set parsing rules for different parts of an email message. By using the available tools, it provides the way of data retrieval from scanned documents sent as email attachments. Filtering of unsolicited messages is done by the given mail server.

fall 2018Jakub SmadišMartin Večeřa
MongoDB NoSQL database performance measurement

The aim of this thesis is to evaluate the performance of NoSQL database MongoDB and to evaluate the performance of MongoDB integrated with Elasticsearch. Measured operations are insert, update of the single field, update of multiple fields, renumbering of the field, and read operation. Operations are performed for a variety of parallel users, different document sizes, using different hardware, for collection stored on a single node, and a sharded collection on two nodes in the cluster. The output of the thesis are the results of the measurement displayed in bar charts.

fall 2018Martin BarnášMartin Večeřa
Analysis of source code from GitHub repositories

In collaboration with Red Hat, a Java source code analysis from the public repositories available on GitHub was designed. This work includes a draft of a tool that returns the results of this analysis according to various criteria. Appropriate tools are used to find basic information about source code quality as a way of keeping indentation, existence of documentary commentaries in classes, public methods, private methods and attributes, and a way of naming public and private attributes. It also searches for known error samples or potential error states. The primary tool for this search is FindBugs. The results are then stored in a suitably designed relational database. In the end, the quality of the selected tools is evaluated and the options for further development of the application are suggested.

fall 2018Katarína HermanováPavel TišnovskýMarek Grác
Implement detection of duplicate test coverage for Java applications

The thesis aims to analyze and implement detection of duplicate tests coverage as part of the open sourcing tool for tests code coverage and to represent the results of founded duplications appropriately. The result of this work should help developers and testers to optimize their test runs.

fall 2018Jakub SchwanRadovan SynekMarek Grác
Graphical User Interface for a C++ Simulator

The goal of the master’s thesis was to implement a graphical user interface for a simulator which has been developed as part of the DIVINE project and thus far only had a command line interface. On this basis the new interface was developed using the C++ programming language and the Qt framework. The written part of the thesis consists of an introduction to formal verification and model checking which is then used to describe the DIVINE project and the tools it consists of. Furthermore, it analyses the functionality of the existing simulator and designs an architecture for the new solution. Afterwards the implementation is described, and the work concludes with an evaluation of achieved goals.

spring 2018Vojtěch FrnochPetr Ročkai
Approvals System for Keycloak server

The diploma thesis covers design and implementation of the Approval System for Keycloak server. The system watches for configuration-changing actions in the server, can intercept such actions and request their approval. It’s also possible to integrate this system with Red Hat JBoss BPM Suite which is a platform for business process management. This thesis was written under the collaboration of Faculty of Informatics, Masaryk University and Red Hat Czech s.r.o.

spring 2018Václav MuzikářMarek PosoldaJaroslav Bayer
Testing user experience of management tool for HA Cluster

This thesis introduces usability testing which aims to improve user experience and usability of the testing tool for management HA Cluster. The first part of the thesis is the presentation of the methodology and the whole preparation, conduction and evaluation of usability testing. The most extensive part of the thesis is devoted to the evaluation of usability testing, which includes found problems and recommendations on how to resolve these problems.

spring 2018Eva VaškováMarek Grác
Blockchain technology in the enterprise environment

Cryptocurrencies and blockchains are rapidly developing technologies offering a lot of interesting ideas and features. Nevertheless, they are still not widely used in the slowly moving enterprise environments. In this thesis, we try to use capabilities of some cryptocurrencies and blockchain in general, for the enterprises. We formulated three use cases, one of them being runtime environment for business processes, for which prototype has been created. A primary advantage of such runtime environment is chance of running processes shared across multiple organizations.

spring 2018Ondrej MulárMarek Grác
Automation of software release distribution for partners

Each product of Red Hat portfolio needs to go through release pipeline. Few of these products need to be pre-released to privileged customers of company, so they can join testing and improve the quality of delivered software. We describe current solution of releasing data to these customers, design, and a way to improve and to automate this process.

spring 2018Jaroslav FedorLuboš KocmanAdam Rambousek
Web Service for Generic Archive Comparison

This thesis deals with the design and implementation of a web service for displaying differences between different versions of file archives. The focus is on extensibility using modules that implement comparisons of archives of various formats, and such module for displaying differences between RPM packages is part of the thesis.

spring 2018Pavla KratochvílováJan HorákAdam Rambousek
Use of Transactions within a Reactive Microservices Environment

Transaction processing is an inherent part of application development. However, particularly in the distributed environment, the utilization of transactions introduces several challenges that transaction management must be able to handle. Microservices represent an emerging architectural style for the modern distributed application design. These applications commonly address similar concerns to stay responsive, elastic and resilient which is why the use of traditional locking transaction commit protocols may not be acceptable. The saga pattern presents a suitable alternative solution to transaction processing that relaxes some of the ACID properties in order to promote availability. In this work, we examine how sagas differ from conventional transactions, investigate currently available saga solutions and propose a saga execution implementation for the Narayana transaction manager.

spring 2018Martin ŠtefankoOndřej ChaloupkaBruno Rossi
Program memory metadata in DIVINE

The thesis focuses on the metadata storage system in DIVINE, a model checking tool. DIVINE uses metadata to track definedness of bytes and location of pointers in the verified program’s memory. The thesis presents a concept of metadata exceptions – an extension to the metadata system for storing more detailed information (bitwise definedness and pointer fragments) in a space-efficient way. Furthermore , it proposes a reimplementation of the system into an efficient and configurable structure employing a layered design. The changes have been incorporated into DIVINE. Presented benchmarks show that overhead of tracking more detailed metadata is negated by performance benefits of the overhaul, leading to a slight speed-up of the tool.

spring 2018Adam MatoušekPetr Ročkai
A Lock-Free Implementation of Union-Find

Implementing parallel systems is highly complex domain composed of many layers ranging from processor architecture to algorithm design. Motivation to implement such systems is to decrease needed time to complete various computations. Implementing parallel Union-Find might be useful because many parallel algorithms are based on this simple, yet powerful data structure. In this thesis we implement parallel Union-Find data structures in a Lock-Free and a Blocking manner, parallel algorithms for Strongly Connected Components graph decomposition which use Union-Find data structure. At the end of this thesis we discuss whether we were successful at implementing parallel data structures and algorithms and how much speedup do they bring.

spring 2018Maroš TkáčikPetr Ročkai
Integration of audio support in zoo appplication

The aim of this bachelor’s thesis is to extend the mobile application of Zoo Brno with the possibility to play recorded stories of each animal. The app must be able to play the records without the internet connection. In case of the missing record, it enables a user to download a package with the record. Because the app is primarily designated for Zoo Brno visitors, to prevent animals from disturbing , it only allows playing of stories with headphones plugged in or device put near the ear of a user. The result of the thesis is an extension of the application implemented for Android and distributed in Google Play.

spring 2018Róbert ĎuriančíkMarek Grác
Infrastructure for Enterprise Applications Deployment

This bachelor’s thesis focuses on deploying applications in the cloud environment. It provides information on container technologies and introduces Kubernetes as the most popular orchestration tool. Additionally, it guides through the deployment of basic Java Enterprise application with databases and authorization technology.

spring 2018Jakub Rudolf MlynárikMartin Večeřa
Server part of a mobile media platform

The aim of this thesis is to design and implement open-source server and content management system for mobile media platform, which consists of iOS and Android applications. The web interface is built in React, and it provides a custom-made WYSIWYG editor, implemented using the Draft.js framework. The server was implemented with Firebase, leveraging the powers of its Realtime Database, Authentication and Cloud Functions.

spring 2018Peter SolařMartin Večeřa
Graphical Debugger of GPIO Pins

The main aim of this thesis is to implement a graphical debugger for single-board computers (SBC) using a library called Bulldog. The first section of this work describes hardware interfaces typically present on SBCs with the emphasis on Raspberry Pi. The main part of the thesis is dedicated to the debugger itself, including a graphical demonstration of its functionality. The result is a graphical debugger capable of communicating with devices from the Raspberry Pi family. During the implementation of the debugger, we also discover that the library itself required some major modifications. The application is based on the client-server model. Given the underlying library picked for the debugger, the application is written in Java and is publicly released via GitHub as an open source project.

spring 2018Miloslav ŽežulkaPavel MacíkMarek Grác
Referral Program Platform

The goal of the final thesis is to create a web application that functions as a referral program platform. This work is realized in partnership with Red Hat Inc. The platform allows registration of referral programs and subsequently allows potential customers to send invitations to the target application. The platform maintains a waiting list for every program as the access to the target application is limited. The application is primarily implemented in Java Enterprise Edition, uses AngularJS for its visualization purposes and runs on WildFly application server which is developed by Red Hat Inc. at the moment.

spring 2018Matej SojakMartin VečeřaAdam Rambousek
Monitoring and visualizing hardware resource load

The aim of the bachelor thesis was to find and compare the available technologies for obtaining information about hardware for Java applications and the implementation of the graphical interface that visualizes hardware information through graphs and metrics of the selected quantity.

spring 2018Samuel KoremPavel TišnovskýAdam Rambousek
Forward error correction for storage applications

Forward error correction algorithms are a vital element of many storage systems that require insurance of the reliability of data. These algorithms are based on various mathematical theories, and they are useful for different applications. They can use complex arithmetic operations like multiplication in Galois field or simple operations like XOR. All these factors contribute to the fact that the performances of these algorithms differ. Because storage is a crucial commodity of information society and the assurance of the integrity of data is essential, there is a high demand for algorithms that can ensure the data integrity aside from mirroring, which is not space-optimal. This demand is a reason why many open-source libraries emerged from different sources and backgrounds. In this work, we describe the basics on which these algorithms stand. We choose the most used codes in applications to explain the current situation of the theory. Then, we analyze the performance of these codes implemented by several libraries. Finally, we present our results of performance and discuss them along with other properties of these codes.

spring 2018Michal VirgovičMilan Brož
Bitlocker Full Disk Encryption

In the current modern world of information era, Information security plays a vital role in protecting the confidentiality of the sensitive information. The information security has a major role to play in securing the information as the attack surface and adversary capabilities have increased enormously over the years. The security of any information system can be classified as security during communication / transport, security during processing and security during storage. Even though the first two categories have been dealt with to a large extent by security researchers, the latter has been lacking the enhancement due to several issues. The storage security protecting the data at rest has been crucial due to its amount of sensitive information that is being stored and accessible to the adversaries. There are software tools for providing the security for stored information. This thesis reviews the technology of Window’s BitLocker tool for Full Disk Encryption (FDE) and hardware based Self Encrypting Drives (SEDs) [4, 5]. The BitLocker tool is studied and described along with its features and available options for system encryption, BitLocker-on-the-Go and eDrive. It includes the authentication process and the key management methods being used by BitLocker for Windows10 [7, 8, 9]. The thesis also investigates the Self Encrypting Devices (SEDs) supporting the Opal standard with Windows (Bit- Locker eDrive) [2]. The threat models and attacks on disk encryption in the BitLocker edrive context are also analyzed in the thesis [4, 5, 6]. It evaluates the open source tool that enables the access to the Bit- Locker drive format in Linux or Windows. iv

fall 2017Guruprasad Bidare VenkateshMilan Brož
Optimizing authenticated encryption algorithms

In this thesis, we look at authenticated encryption with associated data (AEAD), which is a cryptographic scheme that provides both confidentiality and integrity of messages within a single operation. We look at various existing and proposed AEAD algorithms and compare them both in terms of security and performance. We take a closer look at three selected candidate families of algorithms from the CAESAR competition. Then we discuss common facilities provided by the two most common CPU architectures – x86 and ARM – that can be used to implement cryptographic algorithms efficiently. Finally, we introduce our contribution of implementing the selected CAESAR candidates for the Linux kernel Crypto API.

fall 2017Ondrej MosnáčekMilan Brož
A Platform for Interactive Training Materials Development

The aim of this thesis was to design and implement a platform for interactive training materials. The output cross-platform application allows downloading and executing of particular training modules containing images, sounds and JSON files describing behavior of the module. User can move in scenes made of layers. The movement emulates parallax scrolling effect. User can switch scenes, interact with objects and communicate with characters using dialogs.

fall 2017Marek TeuchnerMartin Večeřa
Symbolic Model Checking via Program Transformations

To show reliability of software, developers usually reach out for testing and static analysis. However, to prove correctness, all behaviours of a program need to be checked. In this respect, formal verification methods aim to provide an automated approach to verification. A big obstacle are inputs because they massively increase the number of behaviours of the program. In this thesis, we present a technique which enables verification tools to perform automated checking of programs with inputs. A generally known approach is to interpret operations with input values in an abstract way. In this case, abstraction needs to be implemented in the verification tool. We propose that instead, an abstraction can be compiled into the program. Hence, the program can be verified by a tool even though the tool itself does not support abstraction of inputs. We implement the proposed approach as an LLVM-to-LLVM transformation which inserts an abstraction to the program. The applicability of the approach is demonstrated by transforming programs to represent their inputs symbolically. This, in turn, enables an essentially explicit-state model checker to verify the program. For evaluation purposes, we have chosen DIVINE as the model checker.

fall 2017Henrich LaukoPetr Ročkai
Goal Tracking System

The work presents the design and the implementation of the goal tracking system for employees of RedHat. This system enables local managers to plan, track and evaluate goals of their direct reports. The first part of the thesis deals with the goal planning theory. The following section discusses the different UX principles that were used while designing and implementing the system. The third part describes the process of collecting user requirements. Based on the collected requirements the basic design of the system architecture and the basic design of the UI was created. The last part is devoted to the implementation of the system.

fall 2017Martin PeňázŠtefan BunčiakAdam Rambousek
Optimization and implementation of AF_KTLS in user-space applications

AF_KTLS is a kernel module that introduces parts of TLS and DTLS protocols to the Linux kernel. User-space applications can transparently use AF_KTLS type socket to perform encryption and decryption of traffic. This thesis provides an analysis of the AF_KTLS module and identifies use cases where it could be used to optimize performance for user-space applications. The changes required for the optimization with AF_KTLS are then implemented and the results are benchmarked to identify bottlenecks and suggest possible solutions.

fall 2017Ananya ChatterjeeFridolín PokornýVáclav Matyáš
Improvment of system for archiving electronic conferences

Thesis enhances the diploma thesis From mailing list archive to knowledge base (M. BRIŠKÁR, 2014), in which was created a prototype of application for archiving electronic conferences with the title Mailinglist Online, this diploma thesis is about working improvements to the original implementation. In the first chapters will be presented the original application and its deployment, the following chapters are dedicated to implementation of various problems and last chapters are dedicated to deployment of improved program.

fall 2017Július StaššíkMatej BriškárMarek Grác
Talent Acquisition Tool

The main goal of this thesis was to develop a web application capable of querying professional social networks for new talents. The application was succesfully created according to user requirements of Talent Acquisition Team in Red Hat Brno. It was fully tested and it will be deployed in the company. The thesis was not only focused on programming skills. It was also about a communication with end users and UX team in Red Hat, which provided consultation about the UI design. I gained experience from all phases of software development process. The technologies and programming languages used for developing the applicationwere completely new for me. I have proven myself to be flexible enough to handle all of these challenges.

fall 2017Lucia BlahútováŠtefan BunčiakMarek Grác
Detection of manageable devices on network

The main goal of this thesis is to explore how Foreman could be introduced into brownfield deployments and how this process could be made easier. It designs and implements a Foreman plugin which can detect existing machines on the network and allow their management from Foreman.

fall 2017Adam RůžičkaMarek HulánMarek Grác
Decompilation of restored in-memory class fragments in running JVM

The aim of this thesis is the implementation of a plugin for the Thermostat instrumentation tool. The plugin is able to extract the list of names of the classes loaded in the JVM and their bytecode which is then decompiled to source code with an existing decompiler. The written part of the thesis introduces the technologies used, describes the bytecode extraction and its processing. It also describes the architecture of the plugin and the role of Thermostat in the implementation.

fall 2017Petra MikováJiří VaněkMarek Grác
PerfCake Plugin for Integrated Development Environments

The main goal of this thesis is to provide a PerfCake plugin for IDEs, which contains a graphical editor for PerfCake scenarios designing. This plugin improves the PerfCake user experience mainly by simplifying the scenario definition process. The first part of this thesis examines the PerfCake framework and the plugin development process for IntelliJ IDEA, NetBeans, and Eclipse. The second part introduces the design of the solution and describes the implementation of a universal plugin, which can be integrated into the IDEs, including details about integration into IntelliJ IDEA. The resulting plugin has a universal design which allows integration into the IDEs. Complete integration of the plugin into IntelliJ IDEA demonstrates the plugin functionality.

spring 2017Jakub KnetlMartin Večeřa
Monitoring Extension for Microservices Platform SilverWare

This thesis introduces the microservice architecture, its benefits and drawbacks and how it differs from the common monolithic architecture, followed by quick presentation of SilverWare microservice platform. Consequently it presents the basics of monitoring microservices and some of the most popular open-source monitoring tools, followed by my implementation of monitoring extension for SilverWare platform.

spring 2017Jaroslav DufekMartin Večeřa
OpenShift resources monitoring and visualization

This diploma thesis is looking into Openshift resources usage monitoring and visualization. It’s goal was to compare existing solutions, analyze metrics and create distributed solution for Openshift resource monitoring and visualization.

spring 2017Pavel DrobekMartin Večeřa
Synchronization of services communicating over HTTP

The aim of this work is to design and create an open-source service used as a mediator between two counterparts that would enable offline communication using HTTP protocol. Included in this work is a simple WebUI for the mediator.

spring 2017Barbora VaššováMarek HulánMarek Grác
Integrace Informačního systému datových schránek s projektem Apache Camel

The main goal of this thesis is to ease up electronic communication with czech government. First part of this thesis covers current state of public services known as eGovernment. The second part consists of design and implementation of Camel component for czech government system Informační systém datových schránek. Thesis is written with focus on appropriate development processes designed to ease up project maintenance and accessibility to community. As a result of this thesis there is a platform for future projects like this and Came component released in central Maven repository.

spring 2017Josef LudvíčekJiří PechanecMarek Grác
OpenStack integration with Apache Camel project

The purpose of this master’s thesis is to design and develop new Camel component by integrating two open-source project Apache Camel and OpenStack. This new component will act as OpenStack service provider in the Camel integration framework.

spring 2017Jan BouškaJiří PechanecMarek Grác
LinkedIn Search Query Builder

The aim of this bachelor thesis is to create a web application to facilitate the use of LinkedIn by Red Hat staff. This system will provide features to create, search, delete, and edit logical expressions that will be used to filter users profiles. The first part of bachelor thesis is evaluation of existing products and their shortcomings. The implementation of the system and the associated problems are discussed in the second part.

spring 2017Ondrej PontešŠtefan BunčiakAdam Rambousek
The Effects of Age on File System Performance

The purpose of this thesis is to research effects of age on file system performance. For the testing purpose, two automated tests were implemented, which use open source benchmarks fs-drift and FIO to simulate aging and to measure performance. Research was aimed at effects of aging on popular Linux file systems XFS and ext4. Further research examined effects of underlying storage technology on performance of aged file systems. Implemented file system aging test was used to expand testing matrix of Red Hat Kernel Performance team.

spring 2017Samuel PetrovičMatúš KockaAdam Rambousek
Pinball game in Box2D engine

In this bachelor thesis I deal with the physics engine Box2D and its port into Java, JBox2D. My goal is to study features of JBox2D library and then use them to create a simulation of a Pinball machine.

spring 2017David KratochvílPavel TišnovskýAdam Rambousek
Adding external authentication support to a web project

The aim of this thesis is to extend Drupal such that it will support optional external authentication, in particular using mod_auth_gssapi and mod_intercept_form_submit, as well as retrieving additional information about the user from an external identity provider using mod_lookup_identity. Moreover, this functionality will be implemented on the basis of an established mechanism of passing the authentication results to web applications, so there is a viable possibility that it will be usable by multiple external authentication mechanisms. The thesis also provides a description and explanation of the related issues, relevant technologies and their use and configuration, Drupal, as well as the state before the extension, the extension itself, and the resultant state and its implications.

spring 2017Richard KalinecJan PazdzioraVáclav Matyáš
Linux dm-crypt disk encryption in Windows environment

This thesis deals with symetric block cipher encryption of disc image at sector level. Examines possibilities of using open source multiplatform encryption libraries in Windows enviroment. It also describes the algorithms by which the encryption can be implemented. Simple application shows that it is possible to implement disc image encryption using OpenSSL library in operating system Windows so that disc image can be readable in operating system Linux. Consecutive Total Commander demo plugin also shows this functionality.

spring 2017Mário MajernikMilan Brož
Web SDR receiver

The goal of this thesis is to create a client-server application allowing users to listen to radio transmission using a web interface. The application shall read radio signal data from a tuner connected to the server, demodulate the signal on the server side and stream it to connected clients. The created software shall allow different users to listen to different radio channels independently without affecting each other, while allowing a privileged user to change the tuner parameters using the web interface. The application will be implemented using the GNU Radio framework and will support tuners RTL-SDR. This thesis also introduces the concept of Software Defined Radio and describes the modulations supported in the created software.

spring 2017Ondřej LysoněkJaroslav ŠkarvadaMarek Grác
Building docker images without accessing /build API endpoint

Docker is nowadays a most popular containerization platform. Its quick development causes frequent API changes and the provided tools often not satisfy the need of all users. The common method for creating container images for this platform is to use a docker builder, which has some missing features, that the company behind is not going to implement. This component does not allow defining secrets , that will not be present in the final image. Docker builder also cannot influence the layering of the resulting image. To solve these problems as well as the lack of better metadata handling is the target of this thesis.

spring 2017František LachmanTomáš KopečekMarek Grác
User interface design for certificate operations with Network Security Services

The theoretical part of the Master thesis describes basic information about the key management and cryptographic libraries NSS (Network Security Services), GnuTLS, and OpenSSL. The practical part describes the design and the process of the experiment for the use of the NSS, GnuTLS and OpenSSL systems for management of cryptographic keys and public key certificates. In collaboration with the tutor and the consultant, we prepared individual tasks for the students of PA193 Secure Coding Principles and Practices of FI MU. Based on the results of this experiment the usability of the various systems was compared and specific improvements were suggested. The specific steps in performing the experiment for the DevConf 2017 conference in Brno were suggested as well. The wireframes of the graphical user interface of NSS for specialized cryptographic certificate operations were designed.

fall 2016Lenka HorákováMartin UkropVáclav Matyáš
Clustering of CDI components in SilverWare

The aim of this thesis is to implement service discovery and remote calls between CDI components in the microservice platform SilverWare. These capabilities are implemented utilizing JGroups messaging framework, which supports all modern cloud platforms. Versioning of microservices is another enhancement for service discovery introduced as a part of this thesis. The versioning allows running multiple instances of microservice with the different versions in the same cluster. Injection points can limit microservices that can be injected by specifying version queries. The last improvement for the SilverWare platform is an implementation of different load balancing strategies for remote invocations of microservices. All implemented features are demonstrated in QuickStart that can be deployed to OpenShift or executed locally and developed code is open-sourced and publicly available as part of the SilverWare project.

fall 2016Slavomír KrupaMartin Večeřa
Service activity monitoring for SilverWare

The thesis addresses a topic of microservice monitoring in the SilverWare platform. The Microservice architectural pattern is a very recent concept. Therefore I pay considerable attention to the history and the motivation leading towards the microservices architecture. The theoretical part of the thesis covers the history of the software architecture, the Monolithic architecture pattern, the current state of microservices architecture and its future. The second half of the thesis focuses on an actual implementation of microservice monitoring for the SilverWare microservice platform. The practical part of the thesis covers a topic of monitoring with a few examples of third-party solutions, an actual implementation, testing and a future evolution of created monitoring. All the developed software and the test results are included in the attachments of the thesis.

fall 2016Tomáš BorčinMartin Večeřa
Fault Tolerance in Microservices

This thesis explains the concepts of microservice architectures as well as fault tolerance mechanisms. An overview of the most popular frameworks and libraries used in these areas is given and the most suitable solution for the integration of fault tolerance mechanisms into SilverWare microservice platform is proposed. The whole development process is described, including analysis, design, implementation, and testing of a new SilverWare module.

fall 2016Tomáš LivoraMartin Večeřa
Static Analyser for BeakerLib Tests

The aim of this thesis, realized in cooperation with Red Hat, is to design and implement a linter-like tool for BeakerLib-specific mistakes in tests which make use of the BeakerLib library. The tool builds upon code developed within the bkrdoc project. Initially, it was necessary to determine and categorize the possible coding mistakes. As the commands are well-defined, a lot of erroneous use can be detected without the need of actual execution of the tests using static analysis and can thus reduce the cost and time spent on testing. The resulting tool has subsequently been evaluated on both tests containing intentional mistakes and tests written for third-party tools.

fall 2016Zuzana BaranováDavid KutálekVladimír Štill
Java2D library benchmark

Master thesis deals with Java2D library performance, in which are analyzed their components within different JVM (Java Virtual Machines). This thesis discusses three different implementations of JVM – OpenJDK, OracleJDK and IBM Java. Analyzed are also various tools for testing Java applications performance, e.g. SPECjbb2015, SPECjvm2008 and aims to J2D benchmark. The first chapter is mainly oriented on Java2D library and the second part of this thesis analyses various characteristics of JVM, wherein for this part was developed an application for real-time testing Java2D library.

fall 2016Juraj ŠušotaPavel TišnovskýAdam Rambousek
Health and fitness mobile application

The objective of this work is to design and create the multiplatform application which logs meals and exercises. The application is developed by web technologies. The application works offline in the internet browsers and it works as a native application on popular platforms iOS, Android, and Windows Phone.

fall 2016Matej KrálikMartin StránskýAdam Rambousek
JGroups Configurator and Visualiser

JGroups is a messaging toolkit for reliable multicast communication. The diploma thesis analyzes possibilities of convenient configuration and visualization of JGroups clusters and describes creating a configurator and visual probe tool with ability to retrieve or change current configuration, state and statistics of running cluster in a graphical user interface.

fall 2016Michal SorentínyAdam Rambousek
Extending the user interface of irqbalance

In this theses, we focus on description of hardware interrupts and their distribution and balancing on Linux machines done by irqbalance daemon. irqbalance does not allow changes to distribution settings during runtime, and we would like to change the situation. We make a thorough analysis of how the aforementioned daemon works and develop a usable, user-friendly interface for communication with it . The user interface allows users to take a look at the current distribution status and make changes to the settings.

fall 2016Veronika KabátováPetr HolášekAdam Rambousek
Heuristic for initial settings of garbage collector Shenandoah

This thesis deals with the new garbage collector Shenondoah for Java Virtual Machine. The first part introduces the main concepts of this specific garbage collector which is followed by comparation with already existing garbage collectors. In the second part of the thesis, as the possibilities of settings are explored, the selected parameters are submitted to be tested on multiple hardware configurations using standard test tools SPECjvm and SPECjbb. Test results are interpreted in order to recommend appropriate settings for similar configurations.

fall 2016Jan BlizňákPavel TišnovskýMarek Grác
Scene editor for Box2D physics simulator engine

The bachelor’s thesis “Scene editor for Box2D physics simulator engine” is about the physics simulator engine Box2D. The first part is theoretical and concerns the Box2D project itself on theoretical grounds, with explanation about its possibilities and functioning. The practical part contains description of the created scene editor and how its key parts are implemented.

fall 2016Jakub MatuškaPavel TišnovskýMarek Grác
Case Management Task Assignment Using OptaPlanner

The aim of the thesis is to analyse, design and implement a module for automated task assignment by integrating jBPM engine and OptaPlanner. The thesis describes case management, its difference from business process management and their notations. After that, jBPM engine together with OptaPlanner are explained. In the second half of the thesis, the actual implementation and prototype application are presented, including the performance tests in different OptaPlanner configurations and scenarios.

fall 2016Marián MacikIvo BekMarek Grác
Operating system boot from fully encrypted device

The goal of this work is description of existing solutions for booting Linux and Windows from fully encrypted devices with Secure Boot. Before that, though, early bootprocess and bootloaders are described. A simple Linux distribution is then setup to boot from a fully encrypted device. And lastly, existing Windows encryption solutions are described.

fall 2016Daniel ChromikMilan Brož
Document Oriented REST

In this work we focus on application interfaces with REST characteristics. We asses current practical limitations of RESTful approach and describe a general purpose service that aims to mitigate those shortcomings. This is achieved by providing schema-agnostic aggregation and push notifications that can be consumed across all major platforms. We further demonstrate usage of this service in conjunction with our previous work moVirt and the oVirt Virtualization Manager, and the performance gains achieved.

spring 2016Martin BetákTomáš JelínekMarek Grác
Event Guide application for Firefox OS

Diploma thesis contains the creation and implementation of the application for Firefox OS. Created application can search for music events and artists according to various parameters. Earch event can show the list of performers with details. Map is attached to the place of event along with address etc. Modular attachment of API of various web services is available for the application. Text of thesis contains analysis of competitive applications, used technologies, solution and possible enhancements.

spring 2016Michal ZbranekMartin StránskýAdam Rambousek
Batch processes management for WildFly 10

This Master Thesis concerns with the issue of batch processing on Java platform and implements a web application for managing such batch jobs on WildFly 10 application server as a Hawt.io console plugin.

spring 2016Jiří ŽeleznýJiří PechanecAdam Rambousek
JGroups Configurator and Visualiser

JGroups is a messaging toolkit for reliable multicast communication. The diploma thesis analyzes possibilities of convenient configuration and visualization of JGroups clusters and describes creating a configurator and visual probe tool with ability to retrieve or change current configuration, state and statistics of running cluster in a graphical user interface.

spring 2016Michal SorentínyRadim VansaAdam Rambousek
Alert Prediction in Metric Data Based on Time Series Analysis

The goal of the master’s thesis is to develop a module for an open source monitoring and management platform Hawkular. The module should provide real time predictive capabilities for collected time series data. Proposed solution should be computationally efficient and more importantly, it should autonomously select the best time series model for given metric. In other words it should work without analyst ’s interaction. The master’s thesis starts with time series theory and analysis of various approaches for time series forecasting. It discusses which models are best for Hawkular requirements. The implementation chapter focuses on the most important parts like time series models, automatic forecasters and integration into Hawkular. The last chapter conducts evaluation of the implemented models. Models are benchmarked against its alternatives from statistical language R. The results show that implemented models are similar to R alternatives from the prediction accuracy perspective.

spring 2016Pavol LoffayJiří KremserAdam Rambousek
Enhanced remote execution layer for Deployment testing framework

This thesis solves slow remote execution in an internal framework of Red Hat. This framework is used for remote test execution and deployment. My solution provides a new remote execution layer which will be used by the framework. My module also provides clean design allowing a possible new incorporation of unknown implementation of the SSHv2 protocol. Its implementation is not dependant on the framework , therefore it can be used in other frameworks too. My solution provides up 70 percent speed-up per one test. It is also providing simpler and more powerful API.

spring 2016Matej LeškoZdeněk KrausAdam Rambousek
Business Process Wizard

The thesis analyzes existing business process modeling tools and tries to create an alternative way that will bring the business process modeling closer to non-technical users. This alternative way is implemented as a software wizard. The thesis chronologically describes the decision for the wizard, the design of the wizard and the practical use of the wizard.

spring 2016Josef MarkoIvo BekMarek Grác
Storage visualisation

The thesis describes the development process of a tool for visualization of data from Blivet library, a tool for block device administration. This library can be used on linux distributions that originate from Red Hat enterprise Linux distribution. My thesis focuses on the visualization of data that the library uses.

spring 2016Václav HodinaVratislav PodzimekMarek Grác
User interface for storage encryption application

The goal of this thesis is a design of user interface for storage encryption application. A questionnaire that helps to understand the users is a part of thesis. User roles and a specification of functionality of storage encryption application follow. Next comes an analysis of existing applications for storage encryption, namely TrueCrypt, BitLocker, zuluCrypt and LibreCrypt. The main contribution of this thesis are a set of recommendations on how to create a new user interface and a proposal of screens of a new application.

spring 2016Agáta DařbujanováMilan Brož
ModeShape sequencers for selected multimedia formats

The repository management system ModeShape allows the extraction of structured metadata from multimedia formats by analyzing their content. The thesis documents this feature and extends the file format support with multimedia formats. For each format, the set of relevant metadata is defined and sequencer for their extraction is implemented. The thesis also demonstrates one of the sequencers in web content management system Magnolia CMS.

spring 2016Robert ŠiškaJiří PechanecAdam Rambousek
Flashcards application for Firefox OS

The aim of this work is to design and implement an application to help with learning. The application is developed for the operating system Firefox OS. Implementation is carried out using HTML, JavaScript, library JQuery and framework AngularJS.

spring 2016Petr DomkařMartin StránskýAdam Rambousek
Linux Container Diff Tool

This bachelor thesis describes Linux containers and their implementation in Linux system. It also describes Docker platform, its principles and how to use it. There is a description of Docker image and tools to manipulate with it. In practical part the implementation of containerdiff tool is explained. This tool is used to show changes among two docker images.

spring 2016Marek SkalickýJan HorákAdam Rambousek
Serialization of data storage configuration

Blivet-XML-Tools is a tool allowing serialization and deserialization of information related to block devices. The purpose of this implementation is to create a tool for Blivet to make bug fixing easier.

spring 2016Karel VálekVratislav PodzimekMarek Grác
Random number generators in multi-platform environment

There are multiple alternatives for digital random number generation. Firstly, I explore and explain the differences between the types of RNGs, as well as their use in modern Windows and Linux operating systems and their working principles. I propose a wrapper, compatible with both OSes, in two versions: a kernel-mode version and a user-mode version, the latter providing the equivalent of /dev/urandom on both platforms. I use the Dieharder utility to test the randomness of the output data. Also, I measure the respective throughput of the RNGs used.

spring 2016Matej HarčárMilan Brož
Qubes OS

The aim of this thesis was to evaluate the possibilities of virtualization technologies in the field of operating system security and to measure the performance and usability impact of employing virtualization instead of the traditional security mechanisms to justify the need for a novel approach. Current security mechanisms in contemporary operating systems are examined, with an emphasis on the containerization approach represented by Docker, and Mandatory access control (MAC) represented by Security-Enhanced Linux (SELinux). The Qubes OS has been analyzed as an example of security based on virtualization. The experimental part of this thesis consist of two different components. Firstly, the thesis evaluates the extent of performance deterioration when paravirtualization is employed instead of another alternatives, such as native Fedora Linux discribution, the same system using Qubes kernel, Docker containerization and SELinux Sandbox including its variant for GUI application confinement. Secondly, a usability evaluation has been conducted to assess the potential caveats the target user might have to face when working with this operating system. The thesis has concluded the Qubes OS is a viable alternative to a Linux desktop operating system in terms of usability, performance and stability. However, more work has to be done to improve the hardware compatibility, to get a more widespread dissemination amongst casual computer users, which is the main target audience according to its developers.

spring 2016Martin PáleníkJan PazdzioraZdeněk Říha
JVM profile requirements analysis

Increasing numbers and decreasing size of small computing devices call for adjustment of existing software to running on such devices. As a step towards reaching this goal, the Java SE Platform 8 introduced the concept of compact profiles. Compact profiles are proper subsets of the platform that have smaller memory footprint and are capable of running on small devices. The aim of this bachelor thesis is to create an application that allows to decide on compact profile requirements of a given JAR archive, including all its transitive dependencies. The application should have a separate module for dependency resolution and code analysis, as well as client web and console applications for viewing and filtering results. This work gives an overview of the Internet of Things, discusses the Java SE Platform progress in adjusting to its needs, specifies requirements on the developed application, explains reasons behind using specific technologies and discusses how the requirements were met during implementation.

spring 2016Viktoriia BakalovaJiří PechanecAdam Rambousek
Messaging providers in the SilverWare microservices platform

This thesis concentrates on the integration of two messaging providers into SilverWare microservices — Vert.x and Apache ActiveMQ Artemis. It provides the explanation of the microservice architecture, comparison of three different microservice implementations and the description of integrated components. The practical part summarizes the design and the implementation of both messaging providers which is available as an open-source contribution to the SilverWare project.

spring 2016Martin ŠtefankoMartin Večeřa
Mobile application for Symphonia.io

The aim of this thesis is to develop a mobile application using a hybrid development framework. The application will serve as a client for the Optical Music Recognition service provided by Symphonia.io. The thesis describes the development of the application using the Ionic framework.

spring 2016Maroš ŠelengŠtefan BunčiakAdam Rambousek
An automated testing of smartcards in OpenSC project

The thesis investigates the common use of smart cards in the Fedora distribution of the operating system Linux, in order to create a unit testing application for OpenSC project. At first, the smart card usage data are collected and analysed, in order to prepare a set of tests for selected PKCS#11 drivers. Subsequently, the unit testing application for OpenSC project is developed. The objective of the application is to execute a test suite against selected PKCS#11 drivers. The selected drivers for testing are the PIV driver and the smart card driver for Cryptoflex card.

spring 2016Martin StrhárskyNikos MavrogiannopoulosPetr Švenda