Slide 1

Slide 1 text

[email protected] Perl-Entwicklung, OTRS, Training

Slide 2

Slide 2 text

Achtung: WIP

Slide 3

Slide 3 text

OTRS-Pakete testen und verifizieren

Slide 4

Slide 4 text

OTRS

Slide 5

Slide 5 text

HelpDesk-System

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

● Gestartet 2001 ● 1,7 Mio. Downloads ● ca. 110.000 Installationen ● 33 Sprachen ● AGPL ● http://github.com/OTRS/otrs

Slide 8

Slide 8 text

http://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Penguin_Admin.svg/105px-Penguin_Admin.svg.png

Slide 9

Slide 9 text

Ich brauche eine FAQ http://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Penguin_Admin.svg/105px-Penguin_Admin.svg.png

Slide 10

Slide 10 text

Ich brauche eine FAQ Mehr Attribute für Cis http://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Penguin_Admin.svg/105px-Penguin_Admin.svg.png

Slide 11

Slide 11 text

Ich brauche eine FAQ Mehr Attribute für Cis Tickets besser erkennen http://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Penguin_Admin.svg/105px-Penguin_Admin.svg.png

Slide 12

Slide 12 text

Erweiterungen Für OTRS

Slide 13

Slide 13 text

● FAQ ● ITSM – ConfigurationManagement ● ITSM – ChangeManagement ● ITSM – IncidentProblemManagement ● KIX4OTRS ● TaggedCustomerUser ● … ●

Slide 14

Slide 14 text

Paketmanager

Slide 15

Slide 15 text

Screenshot Paketmanager

Slide 16

Slide 16 text

OPAR

Slide 17

Slide 17 text

Screenshots OPAR http://opar.perl-services.de/

Slide 18

Slide 18 text

OTRS Verify

Slide 19

Slide 19 text

Probleme OPAR

Slide 20

Slide 20 text

Vorteil CPAN

Slide 21

Slide 21 text

OPARTester?

Slide 22

Slide 22 text

OTRS-Pakete testen und verifizieren

Slide 23

Slide 23 text

Kriterien

Slide 24

Slide 24 text

● Einhalten von OTRS-Programmierrichtlinien (Perl::Critic und Perl::Tidy) ● Unittests sollen fehlerfrei durchlaufen ● Stabilität und Performanz von OTRS nicht beeinträchtigen ● Keine ungewünschte Kommunikation nach außen ● Trennung von Templates/Funktionalität ● u.v.m.

Slide 25

Slide 25 text

Probleme

Slide 26

Slide 26 text

Idee

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Ziel

Slide 29

Slide 29 text

● Automatisiertes Testen von OTRS-Erweiterungen – Statische Analyse – Laufzeittest ● Ziele – Sicherheitslücken (nahezu) ausschließen – Getestete Module – Usern mehr Informationen zum Modul liefern – Performancefresser identifizieren

Slide 30

Slide 30 text

Umsetzung

Slide 31

Slide 31 text

Schritt 1: Upload

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

Mojolicious

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

Datenbank

Slide 36

Slide 36 text

Los geht's

Slide 37

Slide 37 text

# init fork manager my $max_processes = $self->config->get( 'fork.max' ); my $fork_manager = Parallel::ForkManager->new( $max_processes ); $logger->trace( 'init fork manager with max ' .$max_processes . ' processes' ); for my $tmpjob ( @job_info ) { # do the fork $fork_manager->start and next; # create job and run it my $job = OTRS::OPR::Daemon::Job->new( %{$tmpjob} ); $job->run if $job; } # exit the forked process $fork_manager->finish; $fork_manager->wait_all_children;

Slide 38

Slide 38 text

Schritt 2: Erste Analyse

Slide 39

Slide 39 text

OPM-Format

Slide 40

Slide 40 text

WarnMissingAttachment 3.3.1 3.2.x 3.3.x Perl-Services.de http://www.perl-services.de xxxxxxxxxx Perl::Module ITSM GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007 PD94bWwgdmVyc2 …

Slide 41

Slide 41 text

OTRS::OPM::Analyzer

Slide 42

Slide 42 text

use OTRS::OPM::Analyzer::Utils::OPMFile; my $opm_file = '/path/to/package.opm'; my $opm = OTRS::OPM::Analyzer::Utils::OPMFile->new( opm_file => $opm_file, ); my @otrs_versions = $opm->framework;

Slide 43

Slide 43 text

XML::LibXML

Slide 44

Slide 44 text

Schritt 3: VM erstellen

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

JiffyBox

Slide 47

Slide 47 text

Rex

Slide 48

Slide 48 text

use Rex; use Rex::Commands::Cloud; cloud_service 'Jiffybox'; cloud_auth $api_key; for my $otrs ( @otrs_versions ) { my $box = cloud_instance create => { image_id => "ubuntu_12_4", Name => "test-$otrs", plan_id => $plan_id, password => $root_pwd }; cloud_instance start => $box->{id}; }

Slide 49

Slide 49 text

Screenshot Jiffybox adminpanel

Slide 50

Slide 50 text

Schritt 4: Software installieren

Slide 51

Slide 51 text

OTRS + MySQL

Slide 52

Slide 52 text

cpanm, Apache 2, mod_perl, Perl-Module, libxml2-dev, libgd-xpm-dev, libssl-dev, … Software diese Projekts

Slide 53

Slide 53 text

OTRS einrichten

Slide 54

Slide 54 text

Rex Recipe „OTRS“

Slide 55

Slide 55 text

install [qw/ libcrypt-ssleay-perl libgd-gd2-perl libencode-hanextra-perl ... libtext-csv-xs-perl libxml-parser-perl libyaml-perl libdbd-mysql-perl libnet-ldap-perl apache2 /];

Slide 56

Slide 56 text

create_user "otrs", home => "/opt/otrs", groups => ["www-data"], comment => "OTRS User", no_create_home => TRUE; Rex::Database::MySQL::Admin::Schema::create({ name => $param->{schema}->{name}, }); Rex::Database::MySQL::Admin::User::create({ name => $param->{user}->{name}, host => $param->{user}->{host}, password => $param->{user}->{password}, rights => $param->{user}->{rights}, schema => $param->{schema}->{name} . ".*", });

Slide 57

Slide 57 text

Schritt 5: Metainformationen sammeln

Slide 58

Slide 58 text

OTRS::OPM::Analyzer

Slide 59

Slide 59 text

● BasicXMLCheck ● Dependencies ● Documentation ● License ● PerlCritic ● PerlTidy ● SystemCall ● TemplateCheck ● UnitTests ●

Slide 60

Slide 60 text

Perl::Critic::OTRS

Slide 61

Slide 61 text

● ● *::ProhibitFetchrowHashref ● *::ProhibitDumper ● *::ProhibitLocaltime ● *::ProhibitLowPrecedenceOps ● *::ProhibitOpen ● *::ProhibitPushISA ● *::ProhibitRequire ● *::ProhibitSomeCoreFunctions ● *::RequireCamelCase ● *::RequireParensWithMethods ● *::RequireTrueReturnValueForModules ●

Slide 62

Slide 62 text

Schritt 6: Unittests I

Slide 63

Slide 63 text

XML-Ausgabe

Slide 64

Slide 64 text

5.14.2 OTRS 3.3.1 1 16 2013-12-30 01:35:01 3 ... JSON - undef test (is 'undef') JSON - empty test (is '""') JSON - simple (is '"Some Text"') ERROR: Syntax error in /opt/otrs/scripts/test/Layout.t: Can't use an undefined value as a HASH reference at /opt/otrs/Kernel/System/CustomerUser.pm line 87.

Slide 65

Slide 65 text

OTRS::Unittest::XMLParser

Slide 66

Slide 66 text

Capture::Tiny

Slide 67

Slide 67 text

use Capture::Tiny qw(:all); use OTRS::Unittest::XMLParser; my ($out, $err) = capture { system '/opt/otrs/bin/otrs UnitTest.pl -o XML'; }; my $results = OTRS::Unittest::XMLParser->new( xml => $out, ); for my $test ( @{ $result->tests } ) { say sprintf "%s -> %s", $test->name, $test->duration; }

Slide 68

Slide 68 text

Schritt 7: Pakete installieren

Slide 69

Slide 69 text

bin/otrs.PackageManager.pl -a install \ -p /path/to/SalesforceForOTRS-3.3.1.opm

Slide 70

Slide 70 text

CPAN-Module

Slide 71

Slide 71 text

OTRS AddOns

Slide 72

Slide 72 text

WarnMissingAttachment 3.3.1 3.2.x 3.3.x Perl-Services.de http://www.perl-services.de xxxxxxxxxx Perl::Module ITSM GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007 PD94bWwgdmVyc2 …

Slide 73

Slide 73 text

OTRS::OPM::Analyzer

Slide 74

Slide 74 text

Schritt 8: Unittests II … ∞

Slide 75

Slide 75 text

Schritt 9: Pakete deinstallieren

Slide 76

Slide 76 text

bin/otrs.PackageManager.pl -a uninstall \ -p /path/to/SalesforceForOTRS-3.3.1.opm

Slide 77

Slide 77 text

Schritt 10: Infos an OPAR

Slide 78

Slide 78 text

Schritt 11: VM löschen

Slide 79

Slide 79 text

VM::JiffyBox

Slide 80

Slide 80 text

Offene Punkte

Slide 81

Slide 81 text

● Viel Code ;-) ● … Code-Snippets zusammenführen ● … In OPAR einbauen ● … „Kommunikation nach außen erkennen“ ● ● Sonstiges ● … Finanzielle Unterstützung finden ● … Mehr Freizeit finden