Skip to content

Instantly share code, notes, and snippets.

@bobtfish
Created June 16, 2012 15:48
Show Gist options
  • Save bobtfish/2941747 to your computer and use it in GitHub Desktop.
Save bobtfish/2941747 to your computer and use it in GitHub Desktop.
Message-Passing examples
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
use Catalyst::Test 'TestApp';
ok( request('/')->is_success, 'Request should succeed' );
done_testing();
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
plan skip_all => 'set TEST_POD to enable this test' unless $ENV{TEST_POD};
eval "use Test::Pod 1.14";
plan skip_all => 'Test::Pod 1.14 required' if $@;
all_pod_files_ok();
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
plan skip_all => 'set TEST_POD to enable this test' unless $ENV{TEST_POD};
eval "use Test::Pod::Coverage 1.04";
plan skip_all => 'Test::Pod::Coverage 1.04 required' if $@;
eval "use Pod::Coverage 0.20";
plan skip_all => 'Pod::Coverage 0.20 required' if $@;
all_pod_coverage_ok();
Run script/testapp_server.pl to test the application.
This file documents the revision history for Perl extension TestApp.
0.01 2012-06-12 11:50:54
- initial revision, generated by Catalyst
#!/bin/sh
message-pass \
--input STDIN \
--output STDOUT
#!/bin/sh
message-pass --input STDIN --output STOMP \
--output_options \
'{"destination":"/queue/foo","hostname":"localhost","port":"6163","username":"guest","password":"guest"}'
#!/bin/sh
message-pass --input STOMP --output Redis \
--input_options \
'{"destination":"/queue/foo","hostname":"localhost","port":"6163","username":"guest","password":"guest"}' \
--output_options \
'{"topic":"foo","hostname":"127.0.0.1","port":"6379"}'
#!/bin/sh
message-pass --input Redis --output AMQP \
--input_options \
'{"topics":["foo"],"hostname":"127.0.0.1","port":"6379"}' \
--output_options \
'{"hostname":"127.0.0.1","username":"guest","password":"guest","exchange_name":"foo"}'
#!/bin/sh
message-pass --input AMQP --output STDOUT \
--input_options \
'{"hostname":"127.0.0.1","username":"guest","password":"guest","exchange_name":"foo","queue_name":"foo"}'
#!/bin/sh
message-pass --input STDIN --output ZeroMQ \
--output_options '{"socket_type":"PUSH","socket_bind":"tcp://*:5222"}'
#!/bin/sh
message-pass --input ZeroMQ --output STDOUT \
--input_options '{"socket_type":"PULL","connect":"tcp://127.0.0.1:5222"}'
#!/bin/sh
# example2-zmq-pubconnecttosub-pub
message-pass --input STDIN --output ZeroMQ \
--output_options '{"connect":"tcp://127.0.0.1:5222"}'
#!/bin/sh
message-pass --input ZeroMQ --output STDOUT \
--input_options '{"socket_bind":"tcp://*:5222"}'
#!/bin/sh
# This is for in a second.. :)
export PERL5LIB="lib/:$PERL5LIB"
plackup -E production -s Message::Passing testapp.psgi --host 127.0.0.1 --port 5556
#!/usr/bin/env perl
# IMPORTANT: if you delete this file your app will not work as
# expected. You have been warned.
use inc::Module::Install 1.02;
use Module::Install::Catalyst; # Complain loudly if you don't have
# Catalyst::Devel installed or haven't said
# 'make dist' to create a standalone tarball.
name 'TestApp';
all_from 'lib/TestApp.pm';
requires 'Catalyst::Runtime' => '5.90012';
requires 'Catalyst::Plugin::ConfigLoader';
requires 'Catalyst::Plugin::Static::Simple';
requires 'Catalyst::Action::RenderView';
requires 'Moose';
requires 'namespace::autoclean';
requires 'Config::General'; # This should reflect the config file format you've chosen
# See Catalyst::Plugin::ConfigLoader for supported formats
test_requires 'Test::More' => '0.88';
catalyst;
install_script glob('script/*.pl');
auto_install;
WriteAll;
package TestApp::Controller::Root;
use Moose;
use namespace::autoclean;
BEGIN { extends 'Catalyst::Controller' }
#
# Sets the actions in this controller to be registered with no prefix
# so they function identically to actions created in MyApp.pm
#
__PACKAGE__->config(namespace => '');
=head1 NAME
TestApp::Controller::Root - Root Controller for TestApp
=head1 DESCRIPTION
[enter your description here]
=head1 METHODS
=head2 index
The root page (/)
=cut
sub index :Path :Args(0) {
my ( $self, $c ) = @_;
# Hello World
$c->response->body( $c->welcome_message );
}
=head2 default
Standard 404 error page
=cut
sub default :Path {
my ( $self, $c ) = @_;
$c->response->body( 'Page not found' );
$c->response->status(404);
}
=head2 end
Attempt to render a view, if needed.
=cut
sub end : ActionClass('RenderView') {}
=head1 AUTHOR
Tomas Doran
=head1 LICENSE
This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
__PACKAGE__->meta->make_immutable;
1;
#!/bin/sh
plackup -E production -s Twiggy -MPlack::App::Message::Passing -e'Plack::App::Message::Passing->new(return_address => "tcp://127.0.0.1:5555", send_address => "tcp://127.0.0.1:5556")->to_app'
#!/bin/sh
sudo /opt/local/sbin/rabbitmq-server
#!/bin/sh
redis-server
# rename this file to testapp.yml and put a ':' after 'name' if
# you want to use YAML like in old versions of Catalyst
name TestApp
package TestApp;
use Moose;
use namespace::autoclean;
use Catalyst::Runtime 5.80;
# Set flags and add plugins for the application.
#
# Note that ORDERING IS IMPORTANT here as plugins are initialized in order,
# therefore you almost certainly want to keep ConfigLoader at the head of the
# list if you're using it.
#
# -Debug: activates the debug mode for very useful log messages
# ConfigLoader: will load the configuration from a Config::General file in the
# application's home directory
# Static::Simple: will serve static files from the application's root
# directory
use Catalyst qw/
-Debug
ConfigLoader
Static::Simple
/;
extends 'Catalyst';
our $VERSION = '0.01';
# Configure the application.
#
# Note that settings in testapp.conf (or other external
# configuration file that you set up manually) take precedence
# over this when using ConfigLoader. Thus configuration
# details given here can function as a default configuration,
# with an external configuration file acting as an override for
# local deployment.
__PACKAGE__->config(
name => 'TestApp',
# Disable deprecated behavior needed by old applications
disable_component_resolution_regex_fallback => 1,
enable_catalyst_header => 1, # Send X-Catalyst header
);
# Start the application
__PACKAGE__->setup();
=head1 NAME
TestApp - Catalyst based application
=head1 SYNOPSIS
script/testapp_server.pl
=head1 DESCRIPTION
[enter your description here]
=head1 SEE ALSO
L<TestApp::Controller::Root>, L<Catalyst>
=head1 AUTHOR
Tomas Doran
=head1 LICENSE
This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
1;
use strict;
use warnings;
use TestApp;
my $app = TestApp->apply_default_middlewares(TestApp->psgi_app);
$app;
use strict;
use warnings;
my $app = sub {
return [ 200, [ 'Content-Type' => 'text/html' ], [ 'HI YAPC::EU' ] ];
};
$app;
#!/usr/bin/env perl
use Catalyst::ScriptRunner;
Catalyst::ScriptRunner->run('TestApp', 'CGI');
1;
=head1 NAME
testapp_cgi.pl - Catalyst CGI
=head1 SYNOPSIS
See L<Catalyst::Manual>
=head1 DESCRIPTION
Run a Catalyst application as a cgi script.
=head1 AUTHORS
Catalyst Contributors, see Catalyst.pm
=head1 COPYRIGHT
This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
#!/usr/bin/env perl
use strict;
use warnings;
use Catalyst::ScriptRunner;
Catalyst::ScriptRunner->run('TestApp', 'Create');
1;
=head1 NAME
testapp_create.pl - Create a new Catalyst Component
=head1 SYNOPSIS
testapp_create.pl [options] model|view|controller name [helper] [options]
Options:
--force don't create a .new file where a file to be created exists
--mechanize use Test::WWW::Mechanize::Catalyst for tests if available
--help display this help and exits
Examples:
testapp_create.pl controller My::Controller
testapp_create.pl --mechanize controller My::Controller
testapp_create.pl view My::View
testapp_create.pl view HTML TT
testapp_create.pl model My::Model
testapp_create.pl model SomeDB DBIC::Schema MyApp::Schema create=dynamic\
dbi:SQLite:/tmp/my.db
testapp_create.pl model AnotherDB DBIC::Schema MyApp::Schema create=static\
[Loader opts like db_schema, naming] dbi:Pg:dbname=foo root 4321
[connect_info opts like quote_char, name_sep]
See also:
perldoc Catalyst::Manual
perldoc Catalyst::Manual::Intro
perldoc Catalyst::Helper::Model::DBIC::Schema
perldoc Catalyst::Model::DBIC::Schema
perldoc Catalyst::View::TT
=head1 DESCRIPTION
Create a new Catalyst Component.
Existing component files are not overwritten. If any of the component files
to be created already exist the file will be written with a '.new' suffix.
This behavior can be suppressed with the C<-force> option.
=head1 AUTHORS
Catalyst Contributors, see Catalyst.pm
=head1 COPYRIGHT
This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
#!/usr/bin/env perl
use Catalyst::ScriptRunner;
Catalyst::ScriptRunner->run('TestApp', 'FastCGI');
1;
=head1 NAME
testapp_fastcgi.pl - Catalyst FastCGI
=head1 SYNOPSIS
testapp_fastcgi.pl [options]
Options:
-? -help display this help and exits
-l --listen Socket path to listen on
(defaults to standard input)
can be HOST:PORT, :PORT or a
filesystem path
-n --nproc specify number of processes to keep
to serve requests (defaults to 1,
requires -listen)
-p --pidfile specify filename for pid file
(requires -listen)
-d --daemon daemonize (requires -listen)
-M --manager specify alternate process manager
(FCGI::ProcManager sub-class)
or empty string to disable
-e --keeperr send error messages to STDOUT, not
to the webserver
--proc_title Set the process title (if possible)
=head1 DESCRIPTION
Run a Catalyst application as fastcgi.
=head1 AUTHORS
Catalyst Contributors, see Catalyst.pm
=head1 COPYRIGHT
This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
#!/usr/bin/env perl
BEGIN {
$ENV{CATALYST_SCRIPT_GEN} = 40;
}
use Catalyst::ScriptRunner;
Catalyst::ScriptRunner->run('TestApp', 'Server');
1;
=head1 NAME
testapp_server.pl - Catalyst Test Server
=head1 SYNOPSIS
testapp_server.pl [options]
-d --debug force debug mode
-f --fork handle each request in a new process
(defaults to false)
-? --help display this help and exits
-h --host host (defaults to all)
-p --port port (defaults to 3000)
-k --keepalive enable keep-alive connections
-r --restart restart when files get modified
(defaults to false)
-rd --restart_delay delay between file checks
(ignored if you have Linux::Inotify2 installed)
-rr --restart_regex regex match files that trigger
a restart when modified
(defaults to '\.yml$|\.yaml$|\.conf|\.pm$')
--restart_directory the directory to search for
modified files, can be set multiple times
(defaults to '[SCRIPT_DIR]/..')
--follow_symlinks follow symlinks in search directories
(defaults to false. this is a no-op on Win32)
--background run the process in the background
--pidfile specify filename for pid file
See also:
perldoc Catalyst::Manual
perldoc Catalyst::Manual::Intro
=head1 DESCRIPTION
Run a Catalyst Testserver for this application.
=head1 AUTHORS
Catalyst Contributors, see Catalyst.pm
=head1 COPYRIGHT
This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
#!/usr/bin/env perl
use Catalyst::ScriptRunner;
Catalyst::ScriptRunner->run('TestApp', 'Test');
1;
=head1 NAME
testapp_test.pl - Catalyst Test
=head1 SYNOPSIS
testapp_test.pl [options] uri
Options:
--help display this help and exits
Examples:
testapp_test.pl http://localhost/some_action
testapp_test.pl /some_action
See also:
perldoc Catalyst::Manual
perldoc Catalyst::Manual::Intro
=head1 DESCRIPTION
Run a Catalyst action from the command line.
=head1 AUTHORS
Catalyst Contributors, see Catalyst.pm
=head1 COPYRIGHT
This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment